Sqoop其二,Job任务、增量导入、Hdfs导入、龙目

打印 上一主题 下一主题

主题 1031|帖子 1031|积分 3093

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目录

一、Sqoop中的Job任务
二、使用Job任务实现增量导入
三、从mysql导入hdfs的时候可以指定在hdfs上存储格式
四、Lombok(龙目)


一、Sqoop中的Job任务

  1. 创建job任务好处:
  2. 1、可以将经常使用的导入导出脚本,编写为job任务,每次执行一下命令即可
  3. 2、可以帮助我们记录last-value,从而更好的利用last-value进行增量导入
复制代码
job命令中有哪些参数:
  1. usage: sqoop job [GENERIC-ARGS] [JOB-ARGS] [-- [<tool-name>] [TOOL-ARGS]]
  2. Job management arguments:
  3.    --create <job-id>            Create a new saved job
  4.    --delete <job-id>            Delete a saved job
  5.    --exec <job-id>              Run a saved job
  6.    --help                       Print usage instructions
  7.    --list                       List saved jobs
  8.    --meta-connect <jdbc-uri>    Specify JDBC connect string for the
  9.                                 metastore
  10.    --show <job-id>              Show the parameters for a saved job
  11.    --verbose                    Print more information while working
复制代码
创建一个job任务:
  1. 历史上有一个公司,叫做lloogg
复制代码
  1. sqoop job --create jjoobb -- import  --connect jdbc:mysql://bigdata01:3306/sqoop \
  2. --username root \
  3. --password 123456 \
  4. --table user \
  5. --delete-target-dir \
  6. --target-dir '/sqoopdata/user' \
  7. -m 1
复制代码

如果出现上面的关于Json的错误,请进行如下修复:
1)在sqoop/lib 下,拷贝一个 java-json的jar包:


2) sqoop-env.sh 中 添加 export HCAT_HOME=/opt/installs/hive/hcatalog


3)删除 sqoop中的lib中 hive-exec-3.1.2.jar 这个jar包(可选,我们从前就没有拷贝)。
以上操纵完成后,继承创建job任务,如果创建好了之后,就可以实行了
  1. sqoop job --exec jjoobb
复制代码

要输入mysql的暗码。
总结:
  1. sqoop job --create  jod的名字
  2. sqoop job --list
  3. sqoop job --delete job的名字
  4. sqoop job --exec job的名字
复制代码
二、使用Job任务实现增量导入

通过昨天的last-value的增量导入代码,实现一个job任务:
  1. sqoop job --create auto_import -- import --connect jdbc:mysql://bigdata01:3306/sqoop \
  2. --username root \
  3. --password 123456 \
  4. --table sales_order \
  5. --driver com.mysql.cj.jdbc.Driver \
  6. --target-dir /home/sales_order/dt=20240903 \
  7. --split-by orderId \
  8. -m 1 \
  9. --check-column orderId \
  10. --incremental append \
  11. --last-value 0 \
  12. --fields-terminated-by '\t'
复制代码
实行该脚本:
  1. sqoop job --exec auto_import
复制代码
在数据库中新增两条数据,再次实行这个任务,就能看到增量导入的效果。


三、从mysql导入hdfs的时候可以指定在hdfs上存储格式

  1. sqoop import --connect jdbc:mysql://bigdata01:3306/sqoop \
  2. --username root \
  3. --password 123456 \
  4. --table user \
  5. --delete-target-dir \
  6. --target-dir '/sqoopdata/user2' \
  7. -m 1 \
  8. --fields-terminated-by '\t' \
  9. --null-string '\\N' \
  10. --null-non-string '0' \
  11. --as-parquetfile
复制代码
  1. --null-string '\\N' \
  2. --null-non-string '0' \
  3. 假如我们的mysql中的数据有null值如何处理?
  4. 就看有null值的字段是什么类型的,如果是string类型,就导出成 \N
  5. 如果是数值类型的,就导入变为 0
  6. -as-parquetfile    将mysql数据导出到hdfs的时候,是parquet类型的
复制代码


  1. 假如在hdfs上有一个文件,创建一个hive表,指定这个表的数据的位置就是这个文件所在的位置。
  2. 请问:hive中有数据吗? 答案是有数据!!!!
复制代码
现在创建一个表,字段跟数据的文件字段数量和类型都一样,最紧张的是数据类型和存储位置肯定要要分析的文件一样。
  1. create external table users(
  2. id int,
  3. age int
  4. )
  5. row format delimited
  6. fields terminated by '\t'
  7. stored as parquet
  8. location '/sqoopdata/user2'
复制代码

增补一个UUID:
  1. package com.bigdata;
  2. import java.util.UUID;
  3. public class UUIDDemo {
  4.     /**
  5.      *  UUID 经常用于给图片或者文件起别名的时候
  6.      * @param args
  7.      */
  8.     public static void main(String[] args) {
  9.         for (int i = 0; i < 100; i++) {
  10.             // d8bfa531-80d9-441e-a9bc-6b18d962570b  36位的随机字符串,其中有4个-  UUID,全球唯一
  11.             UUID uuid = UUID.randomUUID();
  12.             String str = uuid.toString();
  13.             System.out.println(str.replaceAll("-",""));
  14.         }
  15.     }
  16. }
复制代码
四、Lombok(龙目)

1、必要安装插件 idea


2、在项目中导入包
  1. <dependency>
  2.             <groupId>org.projectlombok</groupId>
  3.             <artifactId>lombok</artifactId>
  4.             <version>1.18.24</version>
  5.         </dependency>
复制代码
3、使用
可以帮助我们快速实现一个实体的,set get 方法,toString 方法,无参构造方法,没有构造方法等
什么是实体:一个类,只有属性和set、get方法,这个类就称之为实体。
一样平常有这些名字:entry、javabean、pojo
4、实战
  1. package com.bigdata;
  2. import lombok.*;
  3. @NoArgsConstructor
  4. @AllArgsConstructor
  5. @Data
  6. public class Student {
  7.     private String name;
  8.     private int age;
  9. }
  10. package com.bigdata;
  11. public class TestStudent {
  12.     public static void main(String[] args) {
  13.         Student student = new Student();
  14.         student.setName("zhangsan");
  15.         student.setAge(20);
  16.         System.out.println(student.getName());
  17.         Student student2 = new Student("lisi",20);
  18.         System.out.println(student2.toString());
  19.     }
  20. }
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表