は、関心のあるいくつかのパラメータをとります。 --packages
および--jars
である。カスタム.jar
を--jars
に追加できます。あなたはmaven座標を--packages
に渡すことができます。ような何か:あなたはREPL
を使用する場合
spark-submit ... --packages org.apache.spark:spark-streaming-kafka_2.10:1.6.0,org.apache.kafka:kafka_2.10:0.8.2.0 --jars localpath/to/your.jar
spark-shell
でこれらの仕事もそう、あなたのカスタムjar
ファイルと任意の外部依存関係を展開することができます。
ファイルが特に大きい場合は、を使用してコンテキストに追加できます。しかし、これは維持する痛みです。実際に効率的に実行するには、JARファイルをHDFSにデプロイし、HDFSがすべてのノード間で複製するようにする必要があります.HDFSには1つのノードにJARファイルしかない場合は、そしてバージョン管理についてはどうしますか? JAR
ファイルを変更した場合、HDFSに複数のバージョンを用意する必要があるため、ほとんどの場合、古いジョブをコード化しておくために古いファイルを保存する必要があります。あなたは新しいバージョンを使用するために他のジョブを再コンパイルするつもりですか? --packages
と--jars
についての素敵なことは、そのすべての混乱はあなたのために処理されるということです。
しかし、あなたのカスタムJARがそれを保証するのに十分な大きさであるとすれば、それはSparkContext.addJar
で含めることができますが、私が言ったように - これは標準的な方法ではありません。 spark-streaming-kafka
のようなSparkの半コア拡張でも、--packages
オプションで配信されます。
*「ネイティブライブラリを呼び出すいくつかのScalaコード」*は、コードがSparkジョブ内で実行されていることを意味しますか? –
そのコードはSparkジョブから呼び出せるようにする必要があります。私は明確にするために質問を編集します。 –
Sparkの仕事の外部ライブラリを利用したいですか?あなたはあなたの仕事のuber JARの中にそれを詰め込むことを考えましたか? –