所有
使用sqoop import从DB2导入数据时,除了一个表之外,它在大多数情况下工作正常,内容中似乎有一些特殊字符(control-M = ^ M),因此在sqooping时,这些字符被处理作为换行符,因此它后面的所有内容都将出现在导入文件的下一行,这将影响一个错误记录后的所有记录。
我无法猜测如何修复导入?是否有任何狡猾的方式?
答案 0 :(得分:0)
作为可能的解决方案,您可以删除导入查询中的特殊字符:
replace(replace(source_db_column,chr(13),''),chr(10), '') as source_db_column
在这种情况下,在sqoop获取数据之前,它将由源数据库完成。
另一种选择是使用--hive-drop-import-delims
参数和sqoop import
命令以及--map-column-java
选项来指定该列的类型为String:
sqoop import
...
--hive-drop-import-delims
--map-column-java your_column=String
还有一个选项是再次使用--hive-delims-replacement "some_character"
和--map-column-java your_column=String
将特殊字符(\n , \t , and \01
)替换为其他字符。