2014-12-03 23 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

相关问题