Sqoop与hadoop集成,用oraoop进行oracle数据导入

时间:2013-01-07 12:26:42

标签: hadoop sqoop

我一直在尝试使用oooop的勺子将数据从oracle Express版11g R2导入hadoop。

我安装了CDH sqoop并尝试集成已经运行的apache hadoop。

我发现oraoop使用正确,但我在导入时面临以下问题。我也尝试使用apache sqoop和apache hadoop,但仍面临以下问题。 网络搜索建议使用CDH hadoop而不是apache Hadoop。

**

  

线程“main”中的异常java.lang.IncompatibleClassChangeError:   找到类org.apache.hadoop.mapreduce.JobContext,但接口是   预期           at com.quest.oraoop.OraOopDataDrivenDBInputFormat.getDesiredNumberOfMappers(OraOopDataDrivenDBInputFormat.java:201)           在com.quest.oraoop.OraOopDataDrivenDBInputFormat.getSplits(OraOopDataDrivenDBInputFormat.java:51)

**

总结一下,

  

CDH sqoop + Apache Hadoop - 上述

导致数据导入失败      

异常Apache Sqoop + Apache hadoop - 数据导入失败并出现上述异常

     

CDH Sqoop + CDH Hadoop - 这是正确的组合吗?

有什么建议吗?我不确定我是否采取正确的方式。请帮忙。

1 个答案:

答案 0 :(得分:2)

Hadoop经历了从Hadoop 1.0到Hadoop 2.0(相应地从CDH3到CDH4)的巨大代码重构。一个副作用是针对Hadoop 1.0(CDH3)编译的代码与Hadoop 2.0(CDH4)兼容,反之亦然。但是源代码是兼容的,因此只需要使用目标Hadoop分发重新编译代码。

当您在Hadoop 2.0(CDH4)上运行为Hadoop 1.0(CDH3)编译的代码时,异常“找到类X,但预期接口”是非常常见的,反之亦然。

解决方案很简单,您需要同步版本。使用CDH3 Hadoop + CDH3 Sqoop或CDH4 Hadoop + CDH4 Sqoop是最简单的方法。如果您更喜欢使用上游Sqoop版本,那么您必须确保使用为您的Hadoop发行版编译的二进制工件。 Sqoop使得这很容易,因为目标hadoop分布在工件名称中编码 - 例如sqoop-1.4.2.bin__hadoop-1.0.0.tar.gz意味着在Hadoop 1.0 [1]上使用。

完全相同的约束适用于连接器。您必须下载正在运行的Hadoop版本的连接器。在OraOop的情况下,CDH3和CDH4也有单独的伪像[2]。

Jarcec

链接:

1:http://www.apache.org/dist/sqoop/1.4.2/

2:https://ccp.cloudera.com/display/con/Quest+Data+Connectors