字段里面有代码,代码中有换行符\n,在hive中数据就乱了。
datax的json配置文件改下就行了,在reader、writer层级加上代码替换字段中的\n。
使用ORC格式可以解决,但是会导致mysql中的null值同步至HDFS会变成\N的问题。
{
"job": {
"content": [
{
"transformer": [
{
"name": "dx_groovy",
"parameter": {
"code": "for(int i=0;i<record.getColumnNumber();i++){if(record.getColumn(i).getByteSize()!=0){Column column = record.getColumn(i); def str = column.asString(); def newStr=null; newStr=str.replaceAll(\"[\\r\\n]\",\"\"); record.setColumn(i, new StringColumn(newStr)); };};return record;",
"extraPackage": []
}
}
],
"writer": {
...
},
"reader": {
...
}
}
],
"setting": {
...
}
}
}
修改表的属性信息
#null设置
alter table t_dw_ct_author set serdeproperties('serialization.null.format' = '\N');
#字段分隔符
alter table dw_ads.ads_temp_pro_user set SERDEPROPERTIES('field.delim'='\t');