在与Oracle一起运行Apache Sqoop时,即使在命令中使用--hive-drop-import-delims选项后,与HCatalog导入一起使用的Sqoop也无法从列数据中删除新行(\n)。

Sqoop查询:

    sqoop import --connect jdbc:oracle:thin:@ORA_IP:ORA_PORT:ORA_SID \
--username user123 --password passwd123 -table SCHEMA.TBL_2 \
--hcatalog-table tbl2 --hcatalog-database testdb --num-mappers 1 \
--split-by SOME_ID --columns col1,col2,col3,col4 --hive-drop-import-delims \
--outdir /tmp/temp_table_loc --class-name "SqoopWithHCAT" \
--null-string ""

Oracle列 col4 中的数据如下:(数据具有控制字符,例如^ M)
<li>Details:^M
    <ul>^M
        <li>

控制字符会导致此问题吗?

我有什么想念的吗?有没有解决此问题的方法或解决方案?

最佳答案

使用--map-column-java选项可显式声明该列的类型为String。然后--hive-drop-import-delims会按预期工作(从数据中删除\n)。

更改了Sqoop命令:

sqoop import --connect jdbc:oracle:thin:@ORA_IP:ORA_PORT:ORA_SID \
--username user123 --password passwd123 -table SCHEMA.TBL_2 \
--hcatalog-table tbl2 --hcatalog-database testdb --num-mappers 1 \
--split-by SOME_ID --columns col1,col2,col3,col4 --hive-drop-import-delims \
--outdir /tmp/temp_table_loc --class-name "SqoopWithHCAT" \
--null-string "" --map-column-java col4=String

关于oracle - Hive-drop-import-delims在Sqoop中使用HCatalog时不删除换行符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28076200/

10-16 02:52