0

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

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

我收到以下错误

线程“主”java.lang.IncompatibleClassChangeError 中的异常:找到接口 org.apache.hadoop.mapreduce.JobContext,但需要类?

我尝试使用 hadoop 1.0 和 2.0 运行 sqoop 1.4 仍然得到相同的错误。我也试过 sqoop 1.99 和 hadoop 2.0。所以请提出一些除了兼容性之外的不同建议。

4

2 回答 2

1

Sqoop 和 Sqoop2 具有基于 Hadoop 版本不同的二进制分布。如果 Sqoop2 使用错误版本的 Hadoop 编译或系统上存在错误的 hadoop 库,则可以在 Sqoop2 中看到此类错误。尝试解决此问题的方法:

  1. 寻找可能进入类路径的旧 hadoop jar。find / -name 'hadoop*.jar'应该管用。
  2. 确保您已经下载了 Sqoop 的二进制发行版。如果您使用的是 Hadoop2,请下载 Sqoop2 for Hadoop2。如果您使用 Hadoop1,请下载适用于 Hadoop1 的 Sqoop2。
  3. 通过<server configuration directory>/catalina.properties. 罐子可以显式添加到common.loader.
  4. 如果一切都失败了,请联系 Sqoop 邮件列表
于 2014-12-05T23:39:25.437 回答
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

于 2016-04-14T14:14:39.563 回答