datax--从hdfs分区表写入mysql分区字段为空

从hdfs分区表写入mysql分区字段为空

背景

  • 需要从hdfs将以月为分区分区表中的数据全量推到mysql中
  • 分区表的分区字段在hdfs上为目录形式,也就是说其实是假字段
  • 我本来想的是把path直接配置成这种格式,datax会读取到分区目录,作为字段处理,毕竟我们直接从hive查询分区表,分区目录就是直接作为字段进行展示的。
 "path": "/user/hive/warehouse/mytable01/*
  • 28就是那个分区monthkey
"column": [
                {"index":0 ,"type":"string"},
                ……
                {"index":28,"type":"string"}
            ],
  • mysqlwriter中也配置了column列信息
"column": [
                 "date_short",."monthkey"
            ],

结果

  • 推送过去之后,发现分区字段monthkey为null

解决

  • 我又新建了一张接口表,把分区字段作为真字段(即新表不是分区表),推送过去,字段不为null了
  • 这个接口表本来就是需要的,因为除了第一次我们是全量推送,之后就是每天推送最近两个月的了,只不过处于开发阶段,我就省略了,结果发现了这个错误,datax对分区表的读取path必须指定到分区目录,才能读取到这个分区字段?还是说我的理解有误,有大神知道可以指导一下。

官网的按分区读取

  • 按分区读取
  • Hive在建表的时候,可以指定分区partition,例如创建分区partition(day=“20150820”,hour=“09”),对应的hdfs文件系统中,相应的表的目录下则会多出/20150820和/09两个目录,且/20150820是/09的父目录。了解了分区都会列成相应的目录结构,在按照某个分区读取某个表所有数据时,则只需配置好json中path的值即可。
  • 比如需要读取表名叫mytable01下分区day为20150820这一天的所有数据,则配置如下:
"path": "/user/hive/warehouse/mytable01/20150820/*"

参考文档:https://github.com/alibaba/DataX/blob/master/hdfsreader/doc/hdfsreader.md

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值