sqoop全量导入增量导入及合并

1.sqoop全量导入

mysql import到hive中表的当天分区中,每日都是全量数据.

-m        用来指定maptask的并行度

2.sqoop增量导入

怎么区分哪些是增量数据?

根据id字段来区分什么是增量.

场景:数据不发生变化并且id是递增的

比如昨天导入的id 为1 和 2 的数据,

今天我就可以指定导入where id>2的数据.

--incremental append    业务库的数据是不断增加的并且不会修改
--check-column id       根据id列去看他是新增数据
--last-value 2          上次导到id为2的数据,这次从2以后开始导

代码示例:

## --增量导入 1    --根据一个递增字段来界定增量数据
sqoop import \
--connect jdbc:mysql://wxt01:3306/ry \
--username root \
--password 123456 \
--table jw_stu_zsgl \
--hive-import \
--hive-table test.jw_stu_zsgl \
--split-by id \
--incremental append \
--check-column id \
--last-value 40 \
-m 2

根据updatetime字段来区分什么是增量.

一般我们业务表中的数据都是会发生变化的.所以根据id来确认是否增量数据就不行了.

所以我们根据 lastmoddified 最后修改时间 去判断是否 增量数据.

--incremental lastmoddified          根据最后修改时间来确定增量
--check-column updatetime            表中记录最后修改时间的字段名
--last-value '2021-03-01 23:59:59'   上次导入的时间值.这次从大于value值的数据开始导

代码示例:

## --增量导入 2 --根据修改时间来界定增量数据,  要求必须有一个时间字段,且该字段会跟随数据的修改而修改
## lastmodified 模式下的增量导入,不支持hive导入
sqoop import \
--connect jdbc:mysql://wxt01:3306/ry \
--username root \
--password 123456 \
--table jw_stu_zsgl \
--target-dir '/sqoopdata/jw_stu_zsgl'  \
--incremental lastmodified \
--check-column stu_updatetime \
--last-value '2021-03-01 23:59:59'  \
--fields-terminated-by ',' \
--merge-key id   \
-m 1   \
--append  # 追加而不是覆盖

合并-sqoop自带合并功能

--merge-key id

很少用,每天只保留最新的一份全量数据,看不到历史增量,也就是历史状态数据.

一般合并

将每天抽取的增量数据进行保存,然后跟前一天的全量数据(相对于业务库数据的全量状态)进行合并得到一份全量,

合并后的全量数据每天保留一份在当天分区.

好处可以保留每天的增量数据.

增量导入就是导入业务库表中当天发生变化的数据和新增的数据到hive

hive表中每天保留的是业务库表中当天的全量数据.

所以当天的增量数据还要和昨天的全量数据进行合并union all,并且比如说是订单表的话,

因为订单id相同的只保留今天的.

今天的增量数据A union all 昨天全量表B中今天增量数据中没有出现的orderid的数据.

代码:

select              --昨天全量中今天增量中orderid没有的数据
B.orderid,
B.orderstatus,
B.createtime
B.updatetime
from
B left join A
on B.orderid=A.orderid
where B.dt='2020-03-08'
and A.orderid is null
union all            --就是业务库表中当天的全量数据
select               --今天的增量
orderid,
orderstatus,
createtime,
updatetime
from A
;

猜你喜欢

转载自blog.csdn.net/weixin_47699191/article/details/114923575
今日推荐