DataXMySQL数据同步到HDFS时,空值不处理可以吗
1. 问题描述
DataX将MySQL数据同步到HDFS中时,空值(NULL)存到HDFS中时,默认是存储为空字符串(‘’)。
2. 原因分析
HFDS Writer并未提供nullFormat参数:也就是用户并不能自定义null值写到HFDS文件中的存储格式。默认情况下,HFDS Writer会将null值存储为空字符串(‘’),而Hive默认的null值存储格式为\N。所以后期将DataX同步的文件导入Hive表就会出现问题。
3. 解决方案
处理方案有2个:
1. 修改源码。修改DataX HDFS Writer的源码,增加自定义null值存储格式的逻辑,将空字符串存储为\N,这样hive在建表时就不用指定格式了。
以上已orc文件写入为例,同理可以应用到textfile格式的处理。
以上左边你可以对其写死,所有的NULL均转为\\N ,或者像我这边传进来nullFormat使得NULL作为空还是空字符串取决于你这边设置值。
2. 在Hive中建表时指定null值存储格式为空字符串(''),添加: NULL DEFINED AS ‘’
例如:
-
DROP TABLE IF EXISTS base_province;
-
CREATE EXTERNAL TABLE base_province
-
(
-
`id` STRING COMMENT '编号',
-
`name` STRING COMMENT '省份名称',
-
`region_id` STRING COMMENT '地区ID',
-
`area_code` STRING COMMENT '地区编码',
-
`iso_code` STRING COMMENT '旧版ISO-3166-2编码,供可视化使用',
-
`iso_3166_2` STRING COMMENT '新版IOS-3166-2编码,供可视化使用'
-
) COMMENT '省份表'
-
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
-
NULL DEFINED AS ''
-
LOCATION '/base_province/';
4. 运行结果
5. 参考文章
- http://t.csdn.cn/WmEEW
- hive 空值的处理
- DataX使用、同步MySQL数据到HDFS案例_datax mysql同步到hdfs_Redamancy_06的博客-CSDN博客
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgghecg
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13