2013-04-21 162 views
6

退出當我執行:Sqoop蜂巢與狀態1

sqoop import --connect jdbc:mysql://localhost/testdb --table test --hive-table test --hive-import -m 1 

我獲得以下錯誤信息:

13/04/21 16:42:50 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 1 
    at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:364) 
    at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:314) 
    at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:226) 
    at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:415) 
    at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:476) 
    at org.apache.sqoop.Sqoop.run(Sqoop.java:145) 
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
    at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181) 
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220) 
    at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229) 
    at org.apache.sqoop.Sqoop.main(Sqoop.java:238) 

我試圖谷歌,但沒有發現任何解決方案。我以僞分佈的方式在本地設置Hadoop。 Hive運行良好...我使用了嵌入式Metastore。 任何想法如何解決這個問題? 謝謝, 老爹

+0

請分享整個使用參數--verbose生成的日誌輸出。 – 2013-04-22 02:52:11

+0

請在這裏找到日誌:[pastpin](http://www.pastebin.com/HRMZiygh) – Diddy 2013-04-23 16:25:22

+0

...更多信息:從mysql直接導出到hdfs的工作沒有問題,它只是當我嘗試導出到蜂巢我得到這個錯誤。所以我的感覺是,這與丟失mysql驅動或沒有足夠的MySQL表權限無關。 – Diddy 2013-04-23 16:39:15

回答

9

的整個輸出似乎你打以下異常:

13/04/22 18時34分44秒INFO hive.HiveImport:異常線程「main」 java.lang.NoSuchMethodError:org.apache.thrift.EncodingUtils.setBit(BIZ)B

在用戶在「不兼容」版本中使用HBase和Hive之前,我看到過這個問題。不兼容通常可以在多個層次上進行,但是這種特殊情況是HBase和Hive使用不同的節點版本。由於Sqoop將HBase和Hive jar添加到類路徑中,因此只有一個節點版本可以處於活動狀態,因此「第二個」工具(通常是hive)無法正常工作。

你是否有機會在你正在執行Sqoop的機器上同時安裝HBase和Hive?如果是這樣,你可以檢查每個項目正在使用的節儉版本嗎?只需搜索「* thrift * .jar」。如果對這兩個問題的回答都是肯定的,那麼你可以將HBASE_HOME設置爲不存在的東西,以強制Sqoop不加載HBase的節點版本。

+0

非常感謝您的幫助!是的,我在本地開發環境中設置了HBase和Hive。我的搜索顯示hbase-0.94.6.1使用libthrift-0.8.0.jar,而hive-0.10.0使用libthrift-0.9.0.jar。按照您的建議,我將HBASE_HOME設置爲不存在的路徑,並且...非常好,現在一切正常!再次感謝您的大力幫助! – Diddy 2013-04-24 07:22:38

0

有可能是mysql表的權限問題,或者您在配置單元庫中缺少mysql連接器jar。請分享基於日誌的命令

+0

感謝您的回覆。請在這裏找到日誌摘錄:http://pastebin.com/HRMZiygh。我可以在沒有問題的情況下導出到HDFS,而不是Hive,所以問題不在於缺少驅動程序或MySQL權限。 – Diddy 2013-04-22 17:46:44

0

我面臨同樣的錯誤,這將分別與hbase和hive中的libthrift-0.8.0.jar和libthrift-0.9.0.jar相關。所以我只是將我的HBASE_HOME指向未知的位置並執行我的bash。然後就可以了。

但是,這裏是我與蜂巢面臨的問題是我試圖導入的表現在失敗了,現在表已經退出,但實際上並沒有。我想Metastore數據庫文件已經寫好了!所以,如果我們不想刪除metastoredb的整個文件夾,那麼我需要更改表名並重做命令。

2

我同意Jarek Jarcec Cecho的回答。

另一個解決方法是將libthrift*.jar文件從$HIVE_HOME/lib複製到$SQOOP_HOME/lib