Sqoop 同步数据到mysql, Can't parse input data: '\N'

 Sqoop 同步数据到mysql

 

Sqoop  从hdfs 同步数据到mysql 是我们常常遇到的事情

同步分为 分区表同步和非分区表同步

需要注意以下几点

1. hive 中的表 必须是textfile ,不能是有parquet 等压缩方式的

2.hive 表如果是分区表,需要每次只能同步一个分区的数据到 mysql,

如果hive 有多个分区,只能写多个脚本,或者多个循环调度,或者将多分区表落地成一个非分区的临时表,进行同步

hive也可以同步分区表过去,只不过hive一次只能同步一个分区,hive 是文件形式的啊  分区也只是目录文件,你一次只能指定一个目录  不能一下子指定多个目录

3.对于mysql来说  只是把数据(mysql不会在意这数据怎么来的)插到表里   表是分区就按分区字段插  不是分区就直接插

4.hive 推送到mysql 的时候,并不需要字段 名字对应一致,只要字段个数一致,但是数据类型必须一致,否则会出现,且分区的那个字段 在hive 中是伪列,推送的时候 在mysql 中不能有。 \N 的错误

5、sqoop会将 hive 表中空值转换为\N  ,如果MySQL这个字段是 int  double  肯定存储不了\N,会报空值错误。

6、mysql 中 int  double 等要注意hive 的字符长度。

下面写法可以

create table dm.tmp_ae_mid_payback_detail_new as 
select * from dm.ae_mid_payback_detail_new

sqoop export -D mapred.ch

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值