FAQ-SQOOP特殊字符处理
更新时间: 2024-03-11 02:48:53
阅读 4725
FAQ-SQOOP特殊字符处理
如果源数据中存在特殊字符,当使用SQOOP将数据导入HDFS/Hive后,可能会导致字段错位、串行或字段类型转换失败等报错;
问题原因:源数据中有特殊字符,比如\t \n等,如果如果导出数据到HDFS,存储为TEXT格式,而TEXT格式是以\n进行换行的,所以可能导致查询出来的数据行数变多。
解决方案:
1、在SQOOP层面解决,在数据库传输的节点中加入以下参数:
--hive-drop-import-delims :默认剔除同步过来数据中包含的 '\r' '\n' '\01'
--hive-delims-replacement '\t':默认替换同步过来数据中包含的 '\r' '\n' '\01'为'\t'
eg:
cmd模式:
sqoop import --connect jdbc:mysql://hostname:3306/dbname --user username --password passwd --hive-delims-replacement '\t' --query "select * from tablename where $CONDITIONS" --target-dir /user/warehouse/hive.db/xxx
表单模式:在“更多参数”中加入:--hive-drop-import-delims 或者 --hive-delims-replacement '\t'
2、改变数据传输的文件格式 选取能够兼容特殊符号的文件格式,比如parquet
文档反馈
以上内容对您是否有帮助?