2017-09-18 7 views
0

fatjarを作成するためにsbtアセンブリプラグインを使用しています。私は、デフォルトのハープ/スパークの一部であるが、新しいバージョンではいくつかのジャーが必要です。パッケージ化されたjarからクラスを優先する方法をスパークする

私はspark worker jvmに、デフォルトのhadoop/sparkディストリビューションではなく、私のfat jarファイルでパッケージ化されたバージョンを優先させたいと思っています。これどうやってするの?

+0

あなたはあなたのウーファージャーに古いクラスを持っていますか? Sparkのどの部分を古いバージョンに置き換えたいですか? –

+0

申し訳ありませんが、私は質問をする際に間違いを犯しました。私は新しい瓶が必要でしたが、火花は古いバージョンが付属しています。さて、私たちがスパーク・ジョブを提出すると、jvmにはsparkとhadoopからのジャーが入っていて、それからファット・ジャーから入っています。しかし、これらのjarファイルの古いバージョンは既にsparkからインクルードされているので、私のファットjarファイルに追加している新しいバージョンは破棄されます。私はsparkがこれらの新しいバージョンを使用し、デフォルトのspark/hadoopディストリビューションから来た矛盾するjarを破棄したい。要するに、クラスパスで後で追加された瓶を持っていきたいと思います。 –

+0

スパークのどの部分を交換したいですか?どんな瓶が私たちについて話しているのですか? –

答えて

0

解決策は、sparkアプリケーションを送信する際に、spark。{driver、executor} .userClassPathFirstを設定( - confオプション)に設定することです。これには最初にuber jarのjarファイルが含まれ、sparkクラスパスのjarファイルが含まれます。

その他の解決策は、sbtアセンブリでシェーディングを使用することです。そして、以前のバージョンがsparkに含まれている私たちのウーバーの瓶の瓶を陰にしてください。

関連する問題