线程“主”中的异常java.lang.IncompatibleClassChangeError:找到接口org.apache.hadoop.mapreduce.JobContext,但期望类? [英] Exception in thread "main" java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected?

查看:112
本文介绍了线程“主”中的异常java.lang.IncompatibleClassChangeError:找到接口org.apache.hadoop.mapreduce.JobContext,但期望类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用互相兼容的hadoop 1.0和sqoop 1.4。
当我尝试从MySQL导入表格到hdfs。

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

I我得到以下错误:

lockquote
线程main中的异常java.lang.IncompatibleClassChangeError:
找到接口org.apache.hadoop。 mapreduce.JobContext,但class是
的预期吗?

我已经尝试使用hadoop 1.0和2.0运行sqoop 1.4错误。
我也尝试过使用hadoop 2.0的sqoop 1.99。因此,请提出除兼容性以外的其他建议。

解决方案

Sqoop和Sqoop2有二进制发行版,它们基​​于Hadoop版本而有所不同。如果使用错误版本的Hadoop进行编译,或者系统中存在错误的hadoop库,则可以在Sqoop2中看到这种错误。可以尝试解决这个问题:


  1. 寻找可能使其进入类路径的旧hadoop罐子。 find / -name'hadoop * .jar'应该可以工作。

  2. 确保您下载了Sqoop的二进制分发版。如果您使用的是Hadoop2,请下载Hadoop2的Sqoop2。如果您使用的是Hadoop1,请将Sqoop2下载到Hadoop1中。

  3. 通过< server configuration directory> /catalina.properties 。可以明确地将Jars添加到 common.loader

  4. 如果所有其他操作都失败,请联系 Sqoop邮件列表


I am using hadoop 1.0 and sqoop 1.4 which is compatible with each other. When I am trying to import a table from MySQL to hdfs.

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

I am getting following error

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

I have tried running sqoop 1.4 with hadoop 1.0 and 2.0 still getting same error. I have tried sqoop 1.99 with hadoop 2.0 also. So please suggest some different suggestions other than compatibility.

解决方案

Sqoop and Sqoop2 have binary distributions that differ based on Hadoop version. This kind of error can be seen in Sqoop2 if it is compiled with the wrong version of Hadoop or if the wrong hadoop libraries are on your system. Things to try to fix this:

  1. Look for old hadoop jars that may make it into the classpath. find / -name 'hadoop*.jar' should work.
  2. Make sure you've downloaded a binary distrubtion of Sqoop. If you're using Hadoop2, download Sqoop2 for Hadoop2. If you're using Hadoop1 download Sqoop2 for Hadoop1.
  3. Explicitly set the classpath via the tomcat properties in <server configuration directory>/catalina.properties. Jars can be explicitly added to common.loader.
  4. If all else fails, reach out to the Sqoop mailing list.

这篇关于线程“主”中的异常java.lang.IncompatibleClassChangeError:找到接口org.apache.hadoop.mapreduce.JobContext,但期望类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆