ApacheHadoop2.7.1与ApacheSqoop1.4.6兼容吗?

n8ghc7c1  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(271)

我已经安装了apachehadoop2.7.1并集成了apachesqoop1.4.6。当我尝试使用sqoop命令从mysql数据库导入到配置单元时:

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)

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

dy2hfwbg

dy2hfwbg1#

事实上,似乎你正在遭受版本冲突。
回答关于兼容性的第一个问题。是的,我正在跑步
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页面有更多关于驱动程序的信息
但回到最初关于兼容性的问题。我很肯定它是兼容的。
我宁愿检查你的系统和电话上运行的实际版本。
有关hadoop跨版本更改的更多信息,请查看此答案。

相关问题