Sqoop 增量导入HIVE的几种方式

Sqoop 提供了可被用于检索新的行级数据的增量导入模式

在实际工作当中,数据的导入,很多时候都是只需要导入增量数据即可,并不需要将表中的数据每次都全部导入到hive或者hdfs当中去,这样会造成数据重复的问题。因此一般都是选用一些字段进行增量的导入, sqoop支持增量的导入数据。

涉及参数

–incremental (mode)

append:追加,比如对大于last-value指定的值之后的记录进行追加导入。lastmodified:最后的修改时间,追加last-value指定的日期之后的记录

–check-column (col)

用来指定一些列,这些列在增量导入时用来检查这些数据是否作为增量数据进行导入,和关系型数据库中的自增字段及时间戳类似。
注意:这些被指定的列的类型不能使任意字符类型,如char、varchar等类型都是不可以的,同时-- check-column可以去指定多个列。

–last-value (value)

指定自从上次导入后列的最大值(大于该指定的值),也可以自己设定某一值

1.追加导入

一、根据自增字段导入 (–incremental append )
(1)建表导入全量

sqoop import \
--connect jdbc:oracle:thin:@124.223.41.20:1521:ORCL \
--username DARKER \
--password orcl123456 \
--query 'select * from EMP where xh in ('1','2','3','4') and $CONDITIONS' \
--num-mappers 4 \
--target-dir /user/Darke/emp_zl \
--fields-terminated-by "\t" \
--null-string "" \
--null-non-string "" \
--hive-import \
--hive-overwrite \
--hive-table EMP_ZL \
--map-column-hive EMPNO=INT,ENAME=STRING,JOB=STRING,MGR=INT,HIREDATE=DATE,SAL=INT,COMM=INT,DEPTNO=INT,XH=INT \
--split-by XH \

(2) 增量导入HIVE

sqoop import \
--connect jdbc:oracle:thin:@124.223.41.20:1521:ORCL \
--username DARKER \
--password orcl123456 \
--query 'select * from EMP where  $CONDITIONS' \
--num-mappers 4 \
--target-dir /user/hive/warehouse/emp_zl \
--fields-terminated-by "\t" \
--null-string "" \
--null-non-string "" \
--split-by XH \
--incremental append \
--check-column XH \
--last-value  4

2 、根据时间戳字段导入 (–incremental lastmodified)

(1)建表全量导入HIVE

sqoop import \
--connect jdbc:oracle:thin:@124.223.41.20:1521:ORCL \
--username DARKER \
--password orcl123456 \
--query 'select * from EMP where $CONDITIONS' \
--num-mappers 4 \
--target-dir /user/Darke/emp_zl_s \
--fields-terminated-by "\t" \
--null-string "" \
--null-non-string "" \
--hive-import \
--hive-overwrite \
--hive-table EMP_ZL_S \
--map-column-hive EMPNO=INT,ENAME=STRING,JOB=STRING,MGR=INT,HIREDATE=DATE,SAL=INT,COMM=INT,DEPTNO=INT,XH=INT,XXCZSJ_RQSJ=DATE \
--split-by XH \

(2)根据时间戳增量导入HIVE

sqoop import \
--connect jdbc:oracle:thin:@124.223.41.20:1521:ORCL \
--username DARKER \
--password orcl123456 \
--table emp\
--num-mappers 1 \
--target-dir /user/Darke/emp_zl_s \
--fields-terminated-by "\t" \
--null-string "" \
--null-non-string "" \
--check-column xxczsj_rqsj \
--incremental lastmodified \
--last-value "2022-03-14 17:44:04" \
--append

lastmodified模式去处理增量时,会将大于等于last-value值的数据当做增量插入。

2.合并导入

二、根据时间戳字段进行合并导入(–incremental lastmodified ,–merge-key)
(1) 全量导入HIVE并建表

sqoop import \
--connect jdbc:oracle:thin:@124.223.41.20:1521:ORCL \
--username DARKER \
--password orcl123456 \
--table EMP \
--num-mappers 1 \
--target-dir /user/Darke/emp_zl_NEW \
--fields-terminated-by "\t" \
--null-string "" \
--null-non-string "" \
--hive-import \
--hive-overwrite \
--hive-table EMP_ZL_new \

(2)合并导入


sqoop import \
--connect jdbc:oracle:thin:@124.223.41.20:1521:ORCL \
--username DARKER \
--password orcl123456 \
--table EMP \
--num-mappers 1 \
--fields-terminated-by "\t" \
--null-string "" \
--null-non-string "" \
--target-dir /user/Darke/emp_zl_NEW \
--check-column xxczsj_rqsj \
--incremental lastmodified \
--last-value "2022-03-15 18:42:06" \
--merge-key XH \
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值