mysql - Apache Hadoop 2.7.1 是否与 Apache Sqoop 1.4.6 兼容?

标签 mysql hadoop hive sqoop

我已经安装了 apache hadoop 2.7.1 并集成了 apache sqoop 1.4.6。当我尝试使用 sqoop 命令从 MYSQL 数据库导入 HIVE 时:

sqoop import \
--connect "jdbc:mysql://localhost:3306/assignment5" \
--username root \
--password cg \
--table emp_detail \
--fields-terminated-by ',' \
--lines-terminated-by '\n' \
--hive-home /user/hive/warehouse/assignment5.db \
--hive-import  \
--hive-table emp_detail 

我遇到的问题是:

  Exception in thread "main" java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
            at org.apache.sqoop.config.ConfigurationHelper.getJobNumMaps(ConfigurationHelper.java:65)
            at com.cloudera.sqoop.config.ConfigurationHelper.getJobNumMaps(ConfigurationHelper.java:36)
            at org.apache.sqoop.mapreduce.db.DataDrivenDBInputFormat.getSplits(DataDrivenDBInputFormat.java:125)
            at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:301)
            at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:318)
            at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:196)
            at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)
            at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)
            at java.security.AccessController.doPrivileged(Native Method)
            at javax.security.auth.Subject.doAs(Subject.java:422)
            at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
            at org.apache.hadoop.mapreduce.Job.submit(Job.java:1287)
            at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1308)
            at org.apache.sqoop.mapreduce.ImportJobBase.doSubmitJob(ImportJobBase.java:196)
            at org.apache.sqoop.mapreduce.ImportJobBase.runJob(ImportJobBase.java:169)
            at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:266)
            at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:673)
            at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:497)
            at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)
            at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
            at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
            at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
            at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
            at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
            at org.apache.sqoop.Sqoop.main(Sqoop.java:236)

谁能告诉我这个问题是什么意思?

最佳答案

确实,您似乎遇到了版本冲突。

回答您关于兼容性的第一个问题。是的,它确实 我正在运行

Hadoop 2.7.1.2.4.0.0-169

Sqoop 1.4.6.2.4.0.0-169

而且他们确实一起工作。

尝试回答第二个问题

我将通过以下方式检查您是否实际运行了这两个版本

hadoop version
sqoop version

除此之外,您唯一可以添加到导入语句中的内容(可能与您的问题无关)是指定连接驱动程序。对于 mysql,我会使用

--driver com.mysql.jdbc.Driver

但是,我不确定您的问题是否与驱动程序有关。在 sqoop page 上有关于驱动程序的更多信息

但是回到最初关于兼容性的问题。我很确定它是兼容的。

我宁愿检查在您的系统和您的调用上运行的实际版本。

有关跨版本的 Hadoop 更改的更多信息,您可以查看此 answer .

关于mysql - Apache Hadoop 2.7.1 是否与 Apache Sqoop 1.4.6 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38824161/

相关文章:

hadoop - 配置单元查询生成多个小文件

hadoop - 为什么我需要在hive-env.sh文件中设置$ HADOOP_HOME,因为它已经在.bashrc文件中设置

python - 查询Hive表时,Dataframe NumberFormatException上的Spark 2.2 Thrift服务器错误

php - 将阿拉伯值插入 mysql

php - 从列表中获取匹配的 MySQL 行?

mysql - 将 SQL 查询合并为一个

hadoop - 如何在hadoop配置中选择目录列表?

javascript - 添加 WHERE 语句后 Gridview 搜索停止工作

java - JNI应用程序挂起

hadoop - 保存 Hive 查询