【问题标题】:Sqoop Imported Failed: Cannot convert SQL type 2005 when trying to import Oracle tableSqoop 导入失败:尝试导入 Oracle 表时无法转换 SQL 类型 2005
【发布时间】:2017-01-24 00:42:29
【问题描述】:

尝试从 Oracle 数据库导入表作为 parquet 文件时出现以下错误。

 ERROR tool.ImportTool: Imported Failed: Cannot convert SQL type 2005

这个问题已经提出here,但建议的解决方案对我没有帮助。

我正在尝试使用以下命令从命令行导入表,其中 中的参数填充了相应的值:

sqoop import --connect jdbc:oracle:thin:@<host>:<port>/<service> --username <user> --password <password> --hive-import --query 'SELECT * FROM <DB>.<table> WHERE $CONDITIONS' --split-by <ID> --hive-database <HIVE_DB> --hive-table <HIVE_TABLE> --incremental append --check-column <ID> --map-column-hive <ID>=integer --compression-codec=snappy --target-dir=/user/hive/<FOLDER> --as-parquetfile --last-value 0 -m 1

有谁知道如何解决这个问题?我不是 sqooped Oracle 数据库的专家,但这似乎是由于 CLOB 数据类型的存在。 我正在使用 sqoop 1.4.6 在 CDH 5.8 上运行此命令

在没有--as-parquetfile 的情况下运行作业会导致 sqoop 作业似乎卡在 map 0% reduce 0% 处。

【问题讨论】:

标签: oracle hadoop sqoop


【解决方案1】:

使用--map-column-javaclob 数据类型映射到Java String

例如,您有一个列C1。使用:

--map-column-java C1=String

查看docs了解更多详情。

【讨论】:

  • 您能以更通用的方式执行此操作,因此您不需要指定各个列吗?
  • @ThijsDieltjens 不,没有其他方法可以提供 java 映射。
  • 拥有 map-column-java 选项似乎有帮助(绝对适用于 DATA 类型)并确保错误消失。然而,加载数据会卡在 0% 的地图上,而没有 clob 列,它会在一分钟内完成。我是否需要像 Ronak Patel 评论的输入解析参数?如果是这样,我需要其中哪些,因为文档本身并没有让我更清楚。
  • 显然你也需要 Hive 映射。尝试--map-column-hive C1=string 以及 java 映射 (假设 Hive 中的对应列是字符串).
  • 我不知道我是否真的需要--map-column-hive,但它现在可以工作了。显然,使用 CLOB 列加载数据只需要很长时间。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 2020-08-10
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
相关资源
最近更新 更多