记sqoop将mysql数据增量导入hdfs的致命问题

sqoop增量导入数据分为两种方式:

  1. 基于递增列的增量数据导入(Append方式)。
  2. 基于时间列的数据增量导入(LastModified方式)。
一、 Append方式
# append方式
--incremental append \
# 自增id列
--check-column id \
# id大于此值
--last-value 0                     

由于我导的某张表没有自增id,所以我不得不采用LastModified方式
使用非自增id会报错
sqoop ERROR tool.ImportTool: Import failed: Character column (xxx) can not…

二、 LastModified方式
# 2021-10-14 00:30:00
forkDay=`date -d "+1 days" "+%Y-%m-%d 00:30:00"`

......

	--incremental lastmodified \
	# 确保CREATE_DATE 格式与 2021-10-14 00:30:00相同
	--check-column CREATE_DATE \
	--last-value "$forkDay" \

注意问题:

  1. check-column mysql查询不严格区分大小写,但在sqoop导入参数里严格区分大小写。本人一个shell脚本中导入两张表数据,两张表都含有字段create_date,但一个全大写,一个全小写。这样导致在分区导入数据的时候,无法创建相应文件夹。
  2. check-column无法使用 IFNULL(CREATE_DATE,create_date) ;nvl()这类函数
  3. check-column和 last-value格式要完全匹配

本人在sqoop脚本的查询sql里,将查询字段(select xxx,CREATE_DATE)变为大写后,
–check-column CREATE_DATE \
可以使用了,使一个脚本导入两张表

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值