黑猴子的家:Sqoop 命令&参数:merge

将HDFS中不同目录下面的数据合并在一起并放入指定目录中

1、数据

new_staff

1       AAA     male
2       BBB     male
3       CCC     male
4       DDD     male

old_staff

1       AAA     female
2       CCC     female
3       BBB     female
6       DDD     female

尖叫提示:上边数据的列之间的分隔符应该为\t,行与行之间的分割符为\n,不要复制,在vim编辑器里面手敲

2、创建数据,上传hdfs

[yinggu@hadoop102 sqoop]$ mkdir tdata
[yinggu@hadoop102 sqoop]$ cd tdata/
[yinggu@hadoop102 tdata]$ mkdir newdata
[yinggu@hadoop102 tdata]$ mkdir olddata
[yinggu@hadoop102 tdata]$ vim newdata/new.txt
[yinggu@hadoop102 tdata]$ vim olddata/old.txt
[yinggu@hadoop102 sqoop]$ ../hadoop-2.8.2/bin/hadoop fs -put tdata/ /

3、创建JavaBean

[victor@node1 sqoop-1.4.7]$ bin/sqoop codegen \
--connect jdbc:mysql://node1:3306/company \
--username root \
--password 000000 \
--table staff \
--bindir /opt/module/sqoop/staff \
--class-name Staff \
--fields-terminated-by "\t"

4、开始合并

[victor@node1 sqoop-1.4.7]$ bin/sqoop merge \
--new-data /tdata/newdata/ \
--onto /tdata/olddata/ \
--target-dir /tdata/merged \
--jar-file /opt/module/sqoop/staff/Staff.jar \
--class-name Staff \
--merge-key id

5、结果

1   AAA MALE
2   BBB MALE
3   CCC MALE
4   DDD MALE
6   DDD FEMALE

6、参数

序号 参数 说明
1 --new-data HDFS 待合并的数据目录,合并后在新的数据集中保留
2 --onto HDFS中合并后的数据存放目录,合并后,重复的部分在新的数据集中被覆盖
3 --merge-key
合并键,一般是主键ID
4 --jar-file 合并时引入的jar包,该jar包是通过Codegen工具生成的jar包
5 --class-name 对应的表名或对象名,该class类是包含在jar包中的
6 --target-dir 合并后的数据在HDFS里存放的目录

你可能感兴趣的:(黑猴子的家:Sqoop 命令&参数:merge)