web-dev-qa-db-ja.com

サードパーティを追加する方法Java pysparkで使用するjarファイル

Javaのサードパーティデータベースクライアントライブラリがいくつかあります。にアクセスしたい

Java_gateway.py

例:クライアントクラス(jdbcドライバーではない!)をpythonクライアントからJavaゲートウェイ経由で利用可能にする:

Java_import(gateway.jvm, "org.mydatabase.MyDBClient")

Jvmクラスパスにサードパーティライブラリを追加する場所は明確ではありません。 compute-classpath.shに追加しようとしましたが、それはうまくいかないようでした:

 Py4jError: Trying to call a package

また、Hiveと比較すると、Hive jarファイルはcompute-classpath.shを介してロードされないため、疑わしくなります。 jvm側のクラスパスを設定する他のメカニズムが発生しているようです。

22
javadba

外部jarを引数としてpysparkに追加できます

pyspark --jars file1.jar,file2.jar
24
Marl

Spark実行時の構成を使用して、jarファイルにパスを追加できます。

以下に例を示します。

conf = SparkConf().set("spark.jars", "/path-to-jar/spark-streaming-kafka-0-8-Assembly_2.11-2.2.1.jar")

sc = SparkContext( conf=conf)

詳細については document を参照してください。

17
AAB

Spark-submitを使用するときに--jars xxx.jarを追加できます

./bin/spark-submit --jars xxx.jar your_spark_script.py

または環境変数SPARK_CLASSPATHを設定します

SPARK_CLASSPATH='/path/xxx.jar:/path/xx2.jar' your_spark_script.py

your_spark_script.pyはpyspark APIによって作成されました

11
Ryan Chou
  1. 抽出ダウンロードしたjarファイル。
  2. システム環境変数の編集
    • SPARK_CLASSPATHという名前の変数を追加し、その値を\ path\to\the\extracted\jar\fileに設定します。

たとえば、sparktsという名前のフォルダーにあるCドライブのjarファイルを抽出しました。その値はC:\ sparktsです。

  1. 再起動クラスター
5
Umang singhal

上記のすべての答えは私にはうまくいきませんでした

私がpysparkでしなければならなかったことは

pyspark --py-files /path/to/jar/xxxx.jar

Jupyterノートブックの場合:

spark = (SparkSession
    .builder
    .appName("Spark_Test")
    .master('yarn-client')
    .config("spark.sql.warehouse.dir", "/user/Hive/warehouse")
    .config("spark.executor.cores", "4")
    .config("spark.executor.instances", "2")
    .config("spark.sql.shuffle.partitions","8")
    .enableHiveSupport()
    .getOrCreate())

# Do this 

spark.sparkContext.addPyFile("/path/to/jar/xxxx.jar")

私が見つけたソースへのリンク: https://github.com/graphframes/graphframes/issues/104

4
Gayatri

もう1つできることは、pysparkがインストールされているpyspark jarフォルダーにJarを追加することです。通常/python3.6/site-packages/pyspark/jars

Jarが仮想環境のpysparkインストールに移動する必要がある仮想環境を使用している場合は注意してください。

このようにして、コマンドラインで送信したり、コードにロードしたりせずにjarを使用できます。

1
Nab