Sqoop导入问题 - java.lang.IncompatibleClassChangeError:找到类org.apache.hadoop.mapreduce.JobContext,但接口是预期的 [英] Sqoop import issue - java.lang.IncompatibleClassChangeError: Found class org.apache.hadoop.mapreduce.JobContext, but interface was expected

查看:747
本文介绍了Sqoop导入问题 - java.lang.IncompatibleClassChangeError:找到类org.apache.hadoop.mapreduce.JobContext,但接口是预期的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 Sqoop 1.4.3 hadoop 1.2.4 hive 0.11.0



当我尝试执行sqoop导入时:它抛出 IncompatibleClassChangeError。

$ b

有任何建议可以解决这个问题..



使用Sqoop cmd:

  sqoop import --connect jdbc:mysql:// localhost:3306 / employees \ 
--username test --password test

跟踪:

 线程main中的异常java.lang.IncompatibleClassChangeError:找到类org.apache.hadoop.mapreduce.JobContext,但期望接口
在org.apache.sqoop.config.ConfigurationHelper.getJobNumMaps(ConfigurationHelper .java:53)
at com.cloudera.sqoop.config.ConfigurationHelper.getJobNumMaps(ConfigurationHelper.java:36)
at org.apache.sqoop.mapreduce.db.DataDrivenDBInputFormat.getSplits(DataDrivenDBInputFormat.java :121)在org.apach
在org.apache.hadoop.mapred.JobClient.writeSplits e.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:1054)
(JobClient.java:1071)
。在org.apache.hadoop。 mapred.JobClient.access $ 700(JobClient.java:179)
。在org.apache.hadoop.mapred.JobClient $ 2.run(JobClient.java:983)
。在org.apache.hadoop.mapred。 JobClient $ 2.run(JobClient.java:936)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:936)
at org .apache.hadoop.mapreduce.Job.submit(Job.java:550)
在org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:580)
在org.apache.sqoop .mapreduce.ImportJobBase.doSubmitJob(ImportJobBase.java:173)
at org.apache.sqoop.mapreduce.I mportJobBase.runJob(ImportJobBase.java:151)
at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:221)
at org.apache.sqoop.manager.SqlManager.importTable( SqlManager.java:545)在org.apache.sqoop.manager.MySQLManager.importTable(MySQLManager.java:111

在org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java: 403)
at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:476)
at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
在org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
在org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
在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)

能否提供我们可以配置哪个版本的Sqoop来获得这个工作..?

解决案

您是从版本冲突的痛苦,最有可能你正在运行在Hadoop 2.0编写Hadoop的1.0代码。这是因为Hadoop 1.0和2.0大多不兼容,所以您应该确保下载与您的Hadoop发行版相匹配的Sqoop版本。



有关更多详细信息,请查看这里


I'm using Sqoop 1.4.3 with hadoop 1.2.4and hive 0.11.0

When I am trying to do a sqoop import: its throwing up IncompatibleClassChangeError.

Any suggestions to get this fixed..

Sqoop cmd used:

sqoop import --connect jdbc:mysql://localhost:3306/employees \
    --username test --password test

Trace:

Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class org.apache.hadoop.mapreduce.JobContext, but interface was expected
        at org.apache.sqoop.config.ConfigurationHelper.getJobNumMaps(ConfigurationHelper.java:53)
        at com.cloudera.sqoop.config.ConfigurationHelper.getJobNumMaps(ConfigurationHelper.java:36)
        at org.apache.sqoop.mapreduce.db.DataDrivenDBInputFormat.getSplits(DataDrivenDBInputFormat.java:121)
        at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:1054)
        at org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:1071)
        at org.apache.hadoop.mapred.JobClient.access$700(JobClient.java:179)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:983)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:936)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:396)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
        at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:936)
        at org.apache.hadoop.mapreduce.Job.submit(Job.java:550)
        at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:580)
        at org.apache.sqoop.mapreduce.ImportJobBase.doSubmitJob(ImportJobBase.java:173)
        at org.apache.sqoop.mapreduce.ImportJobBase.runJob(ImportJobBase.java:151)
        at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:221)
        at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:545)
        at org.apache.sqoop.manager.MySQLManager.importTable(MySQLManager.java:111)
        at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:403)
        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)

can any one suggest which version of Sqoop we can configure get this working..?

解决方案

You are suffering from a version conflict, most likely you are running code compiled on Hadoop 1.0 on Hadoop 2.0. This is because Hadoop 1.0 and 2.0 are mostly incompatible, so you should make sure to download the version of Sqoop that matches your Hadoop distribution.

For more details, look here.

这篇关于Sqoop导入问题 - java.lang.IncompatibleClassChangeError:找到类org.apache.hadoop.mapreduce.JobContext,但接口是预期的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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