【问题标题】:Sqoop - Import failed: cannot convert sql type -102Sqoop - 导入失败:无法转换 sql 类型 -102
【发布时间】:2017-03-12 11:07:43
【问题描述】:

当我尝试在 Sqoop 上运行命令时:

sqoop import --connect jdbc:oracle:thin:@//MyServer/MyDatabase --username MyUser --password MyPassword -m 1 --table MyTable --fetch-size 10 --create-hive-table --hive-table LocalTable --as-avrodatafile --target-dir /user/sample

我收到以下错误:

导入失败:无法转换sql类型-102

是因为我想生成一个 avro 吗? 谁能告诉我问题是什么以及如何解决?

【问题讨论】:

  • 你检查了Oracle表中的列,检查它是否包含奇怪的数据类型,如BLOB等?
  • 既然您问了这个问题,您是否尝试将表格导入为文本文件?一般来说,您是否尝试过任何方法来诊断问题?
  • 是的,对不起,我一直在调查,但我没有在这里更新我的研究。我会在几分钟内回答自己,以防其他人可能面临同样的问题

标签: sql oracle hive sqoop avro


【解决方案1】:

我找到了问题和解决方案。

错误消息意味着 avro 由于其数据类型而无法转换其中一列。问题出在日期格式上。

解决方案是在 sqoop 命令中添加:

--map-column-java DATE_COLUMN=String

通过这个我们对字符串进行强制转换,avro 不再抱怨

只是添加一些提示:

  1. 如果您需要在多个列中进行转换,请在元素之间使用“,”并且不要留下空格:

    --map-column-java DATE_COLUMN1=String,DATE_COLUMN2=String

  2. 变量类型的首字母必须大写

    --map-column-java COLUMN1=字符串,COLUMN2=整数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多