背景:
使用datax归档mysql数据到hdfs,发现hive中始终多出一些脏数据(id = 8),内容如下:
脏数据排查思路:
排查最终定位datax读取数据时产生了脏数据,原因在于datax类型转换:varhcar → string
根据最靠近8这个值的id回到mysql中查处这样的数据,明显string_data存在特殊字符:
查看原数据解决方法:
mysql中对这两种特殊符号的存储为:
char(10): 换行符 char(13): 回车符
那我们可以用replace函数做查询转换:SELECT id,replace(string_data, char(10), '') FROM tb_querytable
where id =178877467;
总结:
这个问题本质上还是应用上写入不合法造成的,对varchar,text等类型的数据写入应该要通知到研发做数据的合法约束。
网友评论