実行できない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-cdh5.3.0.jar
同じディレクトリにある別のjarファイルを追加するにはどうすればよいですか?
/usr/lib/spark/Assembly/lib/Hive-serde.jar
を追加します。
spark-submit
を使用して実行されたpythonコードからmysqlに接続しようとしていました。
Ambariを使用していたHDPサンドボックスを使用していました。 --jars
、--driver-class-path
などの多くのオプションを試しましたが、どれも機能しませんでした。
/usr/local/miniconda/lib/python2.7/site-packages/pyspark/jars/
のjarをコピーします
今のところ、それが解決策なのか簡単なハックなのかはわかりませんが、POCに取り組んでいるので、私にとってはうまくいきます。
--jars
パラメーターを使用するだけです。 Sparkは、これらのjar(コンマ区切り)を実行プログラムと共有します。
すべての追加の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
Conf/spark-defaults.confに追加するときに、*を使用してすべてのjarをフォルダーにインポートできます。
spark.driver.extraClassPath /fullpath/*
spark.executor.extraClassPath /fullpath/*
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
--jars $(echo /Path/To/Your/Jars/*.jar | tr '' '、')を使用して、Jarsのフォルダー全体を含めることができます。したがって、spark-submit-class com.yourClass\--jars $(echo /Path/To/Your/Jars/*.jar | tr '' '、')\ ...
--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