datax从Hdfs读数据写入Mysql报错--脏数据
datax报错:脏数据
解决:
Hive表 数据类型 | DataX 内部类型 |
---|---|
TINYINT,SMALLINT,INT,BIGINT | Long |
FLOAT,DOUBLE | Double |
String,CHAR,VARCHAR,STRUCT,MAP,ARRAY,UNION,BINARY | String |
BOOLEAN | Boolean |
Date,TIMESTAMP | Date |
参考地址:
https://github.com/alibaba/DataX/blob/master/hdfsreader/doc/hdfsreader.md#33-%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2
由于textfile和orcfile文件表的元数据信息由Hive维护并存放在Hive自己维护的数据库(如mysql)中,目前HdfsReader不支持对Hive元数据数据库进行访问查询,因此用户在进行类型转换的时候,必须指定数据类型,如果用户配置的column为"*",则所有column默认转换为string类型。
其中:
- Long是指Hdfs文件文本中使用整形的字符串表示形式,例如"123456789"。
- Double是指Hdfs文件文本中使用Double的字符串表示形式,例如"3.1415"。
- Boolean是指Hdfs文件文本中使用Boolean的字符串表示形式,例如"true"、“false”。不区分大小写。
- Date是指Hdfs文件文本中使用Date的字符串表示形式,例如"2014-12-31"。
- 特别提醒:
- Hive支持的数据类型TIMESTAMP可以精确到纳秒级别,所以textfile、orcfile中TIMESTAMP存放的数据类似于"2015-08-21 22:40:47.397898389",如果转换的类型配置为DataX的Date,转换之后会导致纳秒部分丢失,所以如果需要保留纳秒部分的数据,请配置转换类型为DataX的String类型。