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 を実行しようとしましたが、それでも同じエラーが発生します。Hadoop 2.0 でも sqoop 1.99 を試しました。したがって、互換性以外のいくつかの異なる提案を提案してください。

4

2 に答える 2

1

Sqoop と Sqoop2 には、Hadoop のバージョンによって異なるバイナリ ディストリビューションがあります。Sqoop2 が間違ったバージョンの Hadoop でコンパイルされている場合、または間違った Hadoop ライブラリがシステムにある場合、この種のエラーが Sqoop2 で見られることがあります。これを修正しようとすること:

  1. クラスパスに入る可能性のある古い Hadoop jar を探します。find / -name 'hadoop*.jar'動作するはずです。
  2. Sqoop のバイナリ ディストリビューションをダウンロードしたことを確認します。Hadoop2 を使用している場合は、Hadoop2 用の Sqoop2 をダウンロードします。Hadoop1 を使用している場合は、Hadoop1 用の Sqoop2 をダウンロードします。
  3. の tomcat プロパティを介してクラスパスを明示的に設定し<server configuration directory>/catalina.propertiesます。Jar は明示的に に追加できますcommon.loader
  4. 他のすべてが失敗した場合は、Sqoop メーリング リストに連絡してください。
于 2014-12-05T23:39:25.437 に答える
0

Hadoop バージョン 1 の sqoop tar ファイルをバージョン 2 にインストールした場合、通常、このエラーが発生します。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 に答える