FAQ-SQOOP特殊字符处理
    更新时间: 2025-10-29 11:28:05
    
    阅读 6110
    
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
作者:焦巍
文档反馈
                    
                    
                    
                    
                 扫码
 扫码 复制
 复制 导出
 导出 
                         
                     
     
     
    
以上内容对您是否有帮助?