2014-12-03 24 views
0

我使用的是互相兼容的hadoop 1.0和sqoop 1.4。 當我試圖從MySQL中導入表格到hdfs。線程「main」中的異常java.lang.IncompatibleClassChangeError:找到接口org.apache.hadoop.mapreduce.JobContext,但期望類是什麼?

sqoop import --connect jdbc:mysql://localhost/mydemo --table wordcount -m 1 --username root --password root123 

我收到以下錯誤

Exception in thread "main" java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected ?

我試圖與Hadoop的1.0和2.0仍然得到同樣的錯誤sqoop 1.4運行。 我已經嘗試與hadoop 2.0 sqoop 1.99也。所以請建議一些不同於兼容性的建議。

+0

我使用hadoop1.0.4和sqoop1.4.1它正在工作。 – 2014-12-03 13:07:16

+0

是的,你是對的。我的錯。我再次檢查它,hadoop 1.x和sqoop 1.4正在爲我工​​作。但是現在我正在使用sqoop 1.99和1.4 for hadoop 2.0,它不工作。 – 2014-12-03 14:38:49

回答

1

Sqoop和Sqoop2有binary distributions,它們根據Hadoop版本而有所不同。如果使用錯誤版本的Hadoop進行編譯,或者系統中存在錯誤的hadoop庫,則可以在Sqoop2中看到這種錯誤。可以嘗試解決這個問題:

  1. 尋找可能使它進入classpath的舊hadoop罐。 find/-name 'hadoop*.jar'應該可以工作。
  2. 確保你已經下載了二進制Sqoop distrubtion。如果您使用的是Hadoop2,請下載Hadoop2的Sqoop2。如果您使用Hadoop1,請將Sqoop2下載到Hadoop1。
  3. 通過<server configuration directory>/catalina.properties中的tomcat屬性顯式設置類路徑。罐子可以明確地添加到common.loader
  4. 如果一切都失敗了,請聯繫Sqoop mailing list
0

當您在版本2中安裝了hadoop版本1的sqoop tar文件時,通常會發生此錯誤。嘗試下載hadoop版本2的sqoop tar文件並安裝它。問題將得到解決。 Hadoop的版本2 sqoop文件看起來像下面

sqoop-1.4.6.bin __ ** Hadoop的2.0.4 - ** alpha.tar.gz

相關問題