全量导入hive表和增量导入hive表

全量导入:

1
2
3
4
5
6
7
8
9
10
11
sqoop import \
--connect jdbc:mysql://master:3306/sqoop_db \
--username root \
--password 123456 \
--table city \
--num-mappers 1 \
--delete-target-dir \
--hive-import \
--fields-terminated-by "," \
--hive-overwrite \
--hive-table hive的库.hive的表

增量导入:

1.append方式
2.lastmodified方式,必须要加–append(最加)或者–merge-key(合并,一般天主键)

这个是第一种方式:incremental append

1
2
3
4
5
6
7
8
9
10
11
sqoop import \
--connect jdbc:mysql://master:3306 \
--username root \
--password 123456 \
--num-mappers 4 \

--target-dir hdfs路径 \ 这个路径是表的路径可以在hive中show create table city;就可以看到hdfs的位置了
--fields-terminated-by "," \
--incremental append \
--check-column id \
--last-value 1 这个就是看你的数字哪一行,如果是1那就从2开始增量数据

参数解释:

1)incremental : append或lastmodified,使用lastmodified方式导入数据要指定增量数据是要 –append(追加)还是要 –merge-key(合并)

2)check-column<字段>: 作为增量导入判断的列名

3)last-value val : 指定某一个值,用于标记增量导入的位置,这个值的数据不会被导入列表中,只用于标记当前表中最后的值。

第二种导入方式–incremental lastmodified –append(例子:列入按照时间进行增量导入)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sqoop import \
--connect jdbc:mysql://master:3306 \
--username root \
--password 123456 \
--table city \
--num-mappers 4 \
--target-dir hdfs路径 \
--fields-terminated-by "," \
--incremental lastmodified \
--check-column last_time \
--last-value '2020-10-10 13:00:00' \
--append

--注意:last-value的设置把包括2020-10-10 13:00:00 时间的数据做增量导入

第三种导入方式–incremental lastmodified –append (进行合并的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sqoop import \
--connect jdbc:mysql://master:3306 \
--username root \
--password 123456 \
--table city \
--num-mappers 4 \
--target-dir hdfs路径 \
--fields-terminated-by "," \
--incremental lastmodified \
--check-column last_time \
--last-value '2020-10-10 13:00:00' \
--merge-key id # 根据id来进行操作

--incremental lastmodified --merge-key的作用:修改过得数据和新增的数据(前提是满足last-value的条件)都会导入尽力啊,并且重复的数据(不需要满足last-value的条件)都会进行合并