底层
mapreduce,具体的说,是map任务
导入导出模式:全量/增量
全量导入
sqoop导入(mysql到hdfs)
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/test \
--username root \
--password 000000 \
--table order_table \
--target-dir /user/order_table \
--delete-target-dir \
--num-mappers 1
增量导入incremental
增量导入有两种方式:
append-通过比较某一列的值大小进行增量导入。LastModified-通过比较某一列的时间大小进行增量导入,这两种方式都是通过check-column指定比较的列,通过last-value指定比较的值。
append方式
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/test \
--username root \
--password 000000 \
--table order_table \
--target-dir /user/order_table \
--num-mappers 1 \
--incremental append \
--check-column order_id \
--last-value 2
lastmodified 方式
bin/sqoop import \
--connect jdbc:mysql://hadoop102:3306/test \
--username root \
--password 000000 \
--table order_table \
--target-dir /user/order_table \
--num-mappers 1 \
--incremental lastmodified \
--check-column mod_time \
--append \
--last-value "2020-10-29 10:53:00"
导数据时碰到的问题
Hive中的Null在底层是以“\N”来存储,而MySQL中的Null在底层就是Null,为了保证数据两端的一致性。在导出数据时采用--input-null-string和--input-null-non-string两个参数。导入数据时采用--null-string和--null-non-string。