sqoop的增量导入有两种模式:append模式和lastmodified模式
在实际的工作中,我们大部分的情况下使用的都是增量导入,不需要每次都需要将表中的所有的数据导入到hdfs或者hive中,这样会造成数据的重复.
增量导入常用的参数:
- --check-column:用指定字段去检查是否符合增量导入的条件
- --incremental:指定增量导入的模式,可选append | lastmodified
- --last-value:跟--check配合使用,上次导入的最后一个值
1.append模式
假设test库中有张表user,数据如下:
id | name | age |
1 | 张三 | 18 |
2 | 李四 | 20 |
3 | 王五 | 22 |
先使用全量导入将表数据导入到hdfs中
bin/sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root --password 123456 \
--table user --m 1 \
--target-dir /sqoop/test \
之后表中新增一条数据为:
id | name | age |
1 | 张三 | 18 |
2 | 李四 | 20 |
3 | 王五 | 22 |
4 | 赵六 | 33 |
这时候要将新增的一条数据导入到hdfs中,就不可已使用全量导入,会造成数据的重复,这时候就要考虑增量导入
bin/sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root --password 123456 \
--table user --m 1 \
--target-dir /sqoop/test \
--check-column id \
--incremental append \
--last-value 3
这时候就会在hdfs的test目录下新生成一个文件part-m-00001,该文件中的数据为新增的一条数据