2017-03-12 35 views
0

当我尝试在Sqoop运行命令:Sqoop - 导入失败:不能将SQL类型-102

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

我收到以下错误:

Import failed: cannot convert sql type -102

难道是因为我试图生成一个avro? 任何人都可以告诉我问题是什么以及如何解决它?

+0

你检查了Oracle表中的列,检查它是否包含奇怪的数据类型,如BLOB等? –

+0

既然你问了这个问题,你是否尝试将表格导入为TextFile?一般来说,你是否尝试过**任何**来诊断问题? –

+0

对不起,我一直在调查,但我没有在这里更新我的研究。我会在几分钟内回答自己,以防其他人可能面临同样的问题 –

回答

0

我发现了问题和解决方案。

错误消息意味着avro由于其数据类型而无法转换其中一列。问题与日期格式完全相同。

的解决方案是在sqoop命令补充一点:

--map列的Java DATE_COLUMN =字符串

有了这个,我们做了浇铸到字符串,Avro的犯规抱怨了

我想补充一些提示更多:

  1. 如果您需要在多个列中投,用“”元素之间不留空格:

    --map列-java的DATE_COLUMN1 =字符串,DATE_COLUMN2 =字符串

  2. 变量类型必须与第一个字母为大写被写入

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