datax同步mysql至hdfs空值问题

发布时间 2023-10-07 14:58:42作者: sunshin1

datax中没有提供给用户自定义null值到hdfs文件的存储格式,hdfs writer会将null值存储为空字符串('')

而hive默认存储格式为\N,后期将DataX同步的文件导入Hive表就会出现问题

解决方法:

1.修改源码(推荐):参考http://t.csdnimg.cn/BWGRK

修改完成后添加有空值的行数据,hdfs -fs -text path查看是否确为\N

2.在hive中规定映射关系

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/';

注意:这种方式会将原本的空字符串内容识别为空值,影响数据准确性