2017-09-19 1 views
2

私はスパークEMRジョブに自分の依存関係を持たせるために少なくとも2つの方法を知っています。 1つはfat jarを作成し、もう1つは--packagesオプションを使用してspark submitで必要なパッケージを指定することです。スパーク、ファットジャーの代替

ファットジャーはジップアップにかなりの時間がかかります。それは普通ですか? 〜10分。間違った設定をしている可能性はありますか?

コマンドラインオプションは問題ありませんが、エラーが発生しやすいです。

代替手段はありますか?私はgradleを使ってjarファイルに依存関係リストを含める方法(すでに存在している)があれば、それをダウンロードしてもらいたいです。これは可能ですか?他の選択肢はありますか?

更新:私は部分的な回答を掲示しています。私が元の質問で明確にしなかったことの1つは、でもは、異なるバージョンの同じjarファイルを持っているため、依存関係の競合があるときに気にすることです。

答えて

1

ファットジャーは本当に作成に多くの時間がかかります。私は、実行時に必要ではなかった依存関係を取り除くことによって、少し最適化することができました。しかし、それは本当に痛みです。

0

HubSpotには(部分的な)ソリューションSlimFastがあります。それはビルドするときに、それはjarファイルをパッケージ化することなく、それをしない、それはS3に今までに必要なすべてのjarファイルを格納し、それがする必要があるときは、ここでの説明http://product.hubspot.com/blog/the-fault-in-our-jars-why-we-stopped-building-fat-jarsを見つけることができますし、ここにコードを効果的https://github.com/HubSpot/SlimFast

を見つけることができますそれを実行するとs3からそれらを取得します。ビルドが速く、ダウンロードに時間がかかりません。

これはまた、競合を避けるために、アップロード時にjarのパスを陰影付けする能力があれば、完璧な解決策になると思います。