工作过程中发现了用sqoop将oracle中的数据导入到hive时,会因为oracle中类型为clob的字段中存在换行时,会造成hive的数据错位。即使加上了 --hive-drop-import-delims 也无效。
通过查询,发现有两种解决方案,
一种是将oracle中类型为clob的字段通过cast(column_name as varchar2(4000)) 将类型进行显式转换。
另一种是用 --map-column-java col1=String,col2=String 来显式说明某字段在java中的类型。
关于第二种方式,详见 https://stackoverflow.com/questions/28076200/hive-drop-import-delims-not-removing-newline-while-using-hcatalog-in-sqoop
sqoop文档中关于改参数的说明,详见:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_literal_blob_literal_and_literal_clob_literal_columns