2017-03-12 52 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 =整數