【发布时间】:2017-02-06 14:46:19
【问题描述】:
我正在尝试从我的 Oracle 11g R2 (import-all-tables) 导入所有表,但遇到了 CLOB 类型的问题。 (使用CDH 5.9,Sqoop 1.4.6-cdh5.9.1)
第一次尝试:
sqoop import-all-tables --connect ... --hive-import --hive-overwrite --as-parquet-file --autoreset-to-one-mapper -m XX --direct
在找到一个具有 CLOB 列的表之前正确导入表并抛出以下错误:无法转换为 SQL 类型 2005。
第二次尝试:
sqoop import-all-tables -D oraoop.disabled=true --connect ... --hive-import --hive-overwrite --as-parquet-file --autoreset-to-one-mapper -m XX
我得到同样的错误。
第三次尝试
sqoop import --connect ... --hive-import --hive-overwrite --as-parquet-file --autoreset-to-one-mapper -m XX --table MyClobTable --map-column-java CLOBCOL=String
这行得通,所以我尝试让所有表格都一样:
sqoop import-all-tables --connect ... --hive-import --hive-overwrite --as-parquet-file --autoreset-to-one-mapper -m XX --map-column-java CLOBCOL=String
这失败了,因为我的一个表只有一个 CLOBCOL 列。
有没有办法使用 import-all-tables,修复 2005 SQL 类型错误,或者告诉 Sqoop 如何“即时”解决它?
谢谢!
【问题讨论】:
-
您看到的具体问题是什么?与其试图将 clob 强制转换为字符串,不如考虑让 sqoop 根据文件大小的需要存储文件(如果相对较小,可以内联,否则在 _lobs subdir 中)。
-
我编辑了我的帖子,试图更加明确。如何“让 Sqoop 根据大小存储文件”?