2017-06-10 4 views
0

コンパイル時に依存しない2つのモジュールを持つspark scala 1.6.1_2.10プロジェクトがあります。最初のモジュールはスパークドライバアプリを起動しています。 最初のモジュールで、rdd.map {}オペレーションの1つで、リフレクションclass.forName( "second.module.function.MapOperation")を使用してクラスをロードしようとしています。Apache Spark 1.6.1のClass.forNameマップ

spark-submitには、モジュール1をプライマリ、その他を--jarsオプションで指定します。

このコードは、ローカルのintellijで正常に動作します。 ClassNotFound second.module.function.MapOperation on cluster 同じクラスをテストすると、ClassNotFoundの機能テストケースでも失敗します。

私はクラスローダーに問題があり、スパークジョブ/操作でClass.forNameを使用していますか?

+0

クラスタにjarがありません。 ...私の[回答]を見てください(https://stackoverflow.com/a/43720970/647053) –

+0

直接呼び出される(リフレクションなしの)クラスは、問題なく呼び出されます。 – RockSolid

+0

あなたのjarファイルが存在するかどうかを確認します –

答えて

0

jdをhdfsに入れて、spark submitにそのパスを提供する必要があります。

このようにして、すべてのスパークプロセスはクラスにアクセスできます。

関連する問題