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

Posted

技术标签:

【中文标题】Sqoop - 导入失败:无法转换 sql 类型 -102【英文标题】:Sqoop - Import failed: cannot convert sql type -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等? 既然您问了这个问题,您是否尝试将表格导入为文本文件?一般来说,您是否尝试过任何方法来诊断问题? 是的,对不起,我一直在调查,但我没有在这里更新我的研究。我会在几分钟内回答自己,以防其他人可能面临同样的问题 【参考方案1】:

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

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

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

--map-column-java DATE_COLUMN=String

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

只是添加一些提示:

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

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

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

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

【讨论】:

以上是关于Sqoop - 导入失败:无法转换 sql 类型 -102的主要内容,如果未能解决你的问题,请参考以下文章

Sqoop Hive 字符串数据类型转 MS SQL Server 类型

Sqoop:导入所有转换 blob 类型的表

当表在不同的架构中时,如何从 SQL Server 导入所有带有 sqoop 的表?

Sqoop 导入映射器失败,但 sqoop 作业显示正在运行

SQOOP 导入:删除 ORACLE CLOB 数据类型中的 pilcrow

avro 格式的日期数据类型的 Sqoop 导入