web-dev-qa-db-ja.com

spark submitは、クラスパスに複数のjarを追加します

実行できないjarファイルが1つしかない場合、複数のjarファイルがあるsparkプログラムを実行しようとしています。同じ場所にある両方のjarファイルを追加したい。私は以下を試しましたが、依存関係エラーが表示されます

spark-submit \
  --class "max" maxjar.jar Book1.csv test \
  --driver-class-path /usr/lib/spark/Assembly/lib/Hive-common-0.13.1-cdh​5.3.0.jar

同じディレクトリにある別のjarファイルを追加するにはどうすればよいですか?

/usr/lib/spark/Assembly/lib/Hive-serde.jarを追加します。

31

spark-submitを使用して実行されたpythonコードからmysqlに接続しようとしていました。

Ambariを使用していたHDPサンドボックスを使用していました。 --jars--driver-class-pathなどの多くのオプションを試しましたが、どれも機能しませんでした。

解決

/usr/local/miniconda/lib/python2.7/site-packages/pyspark/jars/のjarをコピーします

今のところ、それが解決策なのか簡単なハックなのかはわかりませんが、POCに取り組んでいるので、私にとってはうまくいきます。

3
Ayush Vatsyayan

--jarsパラメーターを使用するだけです。 Sparkは、これらのjar(コンマ区切り)を実行プログラムと共有します。

29
pzecevic

すべての追加のjarのフルパスを指定すると機能します。

./bin/spark-submit --class "SparkTest" --master local[*] --jars /fullpath/first.jar,/fullpath/second.jar /fullpath/your-program.jar

または、次のような行を追加してconf/spark-defaults.confにjarを追加します。

spark.driver.extraClassPath /fullpath/firs.jar:/fullpath/second.jar
spark.executor.extraClassPath /fullpath/firs.jar:/fullpath/second.jar
28
user3688187

Conf/spark-defaults.confに追加するときに、*を使用してすべてのjarをフォルダーにインポートできます。

spark.driver.extraClassPath /fullpath/*
spark.executor.extraClassPath /fullpath/*
12

Spark 2.3では、-jarsオプションを設定するだけです。ただし、ファイルパスにはスキームを先頭に追加する必要があります。例:file:///<absolute path to the jars>例:file:////home/hadoop/spark/externaljsrs/*またはfile:////home/hadoop/spark/externaljars/abc.jar,file:////home/hadoop/spark/externaljars/def.jar

3
Binita Bharati

--jars $(echo /Path/To/Your/Jars/*.jar | tr '' '、')を使用して、Jarsのフォルダー全体を含めることができます。したがって、spark-submit-class com.yourClass\--jars $(echo /Path/To/Your/Jars/*.jar | tr '' '、')\ ...

1
user8311083

--driver-class-pathオプションでは、:を区切り文字として使用して、複数のjarを渡すことができます。以下はspark-Shellコマンドの例ですが、spark-submitでも同じように動作するはずです

    spark-Shell --driver-class-path /path/to/example.jar:/path/to/another.jar

Sparkバージョン:2.2.0

0
user2720864