最近在用DataX从SqlServer同步数据导Hive的时候,发现数据会发生拆分错乱的问题,本来应该在一行记录里的内容,被拆分成了两行记录。第一行后面的内容全部为空,因此判断应为分隔符的问题。即源数据内容中含有Hive分隔换行符,因此在将源数据拆分的时候,识别为了两行内容。
解决方法:
Step1:Hive中的建表语句,由原来的
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' stored as textfile
改为了
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' location '/gg_original/ods/ods_bas_prd_fashion/' TBLPROPERTIES('orc.compress'='snappy'
Step2: DataX中的hdfswriter中,将原来的
"fileType": "text"
改为了
"fileType": "orc"
并同时添加了
"compress":"SNAPPY"
修改完毕后,再次运行测试,数据库中数据已正常显示。