0

oraoop で scoop を使用して、Oracle Express エディション 11g R2 から Hadoop にデータをインポートしようとしています。

CDH sqoop をインストールし、既に実行中の Apache Hadoop を統合しようとしました。

oraoop が正しく使用されていることがわかりましたが、インポート時に次の問題に直面しています。Apache Hadoop で Apache sqoop も試してみましたが、それでも次の問題に直面しました。Web 検索では、Apache Hadoop の代わりに CDH Hadoop も使用することが提案されました。

**

スレッド「メイン」で例外 java.lang.IncompatibleClassChangeError: クラス org.apache.hadoop.mapreduce.JobContext が見つかりましたが、com.quest の com.quest.oraoop.OraOopDataDrivenDBInputFormat.getDesiredNumberOfMappers(OraOopDataDrivenDBInputFormat.java:201) でインターフェイスが予期されていました。 oraoop.OraOopDataDrivenDBInputFormat.getSplits(OraOopDataDrivenDBInputFormat.java:51)

**

要約する、

CDH sqoop + Apache Hadoop - 上記でデータのインポートに失敗しました

exception Apache Sqoop + Apache hadoop - 上記の例外でデータのインポートに失敗しました

CDH Sqoop + CDH Hadoop - これは正しい組み合わせですか?

助言がありますか?正しい方向に進んでいるかどうかはわかりません。助けてください。

4

1 に答える 1

2

Hadoop は、Hadoop 1.0 から Hadoop 2.0 (対応して CDH3 から CDH4) への大規模なコード リファクタリングを経てきました。1 つの副作用として、Hadoop 1.0 (CDH3) に対してコンパイルされたコードは Hadoop 2.0 (CDH4) と互換性がなく、その逆も同様です。ただし、ソース コードは互換性があるため、ターゲットの Hadoop ディストリビューションでコードを再コンパイルするだけで済みます。

Hadoop 1.0 (CDH3) 用にコンパイルされたコードを Hadoop 2.0 (CDH4) で実行している場合、またはその逆の場合、例外「クラス X が見つかりましたが、インターフェイスが期待されていました」は非常に一般的です。

解決策は簡単です。バージョンを同期する必要があります。CDH3 Hadoop + CDH3 Sqoop または CDH4 Hadoop + CDH4 Sqoop を使用するのが最も簡単な方法です。アップストリームの Sqoop リリースを使用する場合は、Hadoop ディストリビューション用にコンパイルされたバイナリ アーティファクトを使用していることを確認する必要があります。Sqoop では、ターゲットの Hadoop ディストリビューションがアーティファクト名でエンコードされているため、これが簡単になります。

コネクタにもまったく同じ制約が適用されます。実行している Hadoop バージョンのコネクタをダウンロードする必要があります。OraOop の場合、CDH3 と CDH4 の個別のアーティファクトもあります [2]。

ヤルセック

リンク:

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

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

于 2013-01-08T08:45:27.863 に答える