web-dev-qa-db-ja.com

jupyterノートブックのpysparkにカスタムjarを追加する

私はPysparkを備えたJupyterノートブックを次のように使用していますdocker imageJupyter all-spark-notebook

ここで、Kafkaからのメッセージを消費するpysparkストリーミングアプリケーションを作成したいと思います。 Spark-Kafka統合ガイド では、spark-submitを使用してそのようなアプリケーションをデプロイする方法について説明しています(外部jarをリンクする必要があります-説明は3にあります。デプロイ)。しかし、私はJupyter Notebookを使用しているので、実際にspark-submitコマンドを実行することはないので、実行を押すと後ろで実行されると思います。

spark-submitコマンドでは、いくつかのパラメーターを指定できます。そのうちの1つは-jarsですが、ノートブックから(または環境変数を介して外部から)このパラメーターを設定する方法がわかりません。この外部jarをSparkConfまたはSparkContextオブジェクトを介して動的にリンクできると想定しています。ノートブックから適切にリンクを実行する方法を経験した人はいますか?

12
DDW

All-sparkコンテナから実行されているjupyterノートブック内からそれを機能させることができました。

以下に示すように、jupyterhubでpython3ノートブックを起動し、PYSPARK_SUBMIT_ARGSフラグを上書きします。 KafkaコンシューマーライブラリがMavenリポジトリからダウンロードされ、私のホームディレクトリ/ home/jovyanに配置されました:

import os
os.environ['PYSPARK_SUBMIT_ARGS'] = 
  '--jars /home/jovyan/spark-streaming-kafka-Assembly_2.10-1.6.1.jar pyspark-Shell'

import pyspark
from pyspark.streaming.kafka import KafkaUtils
from pyspark.streaming import StreamingContext

sc = pyspark.SparkContext()
ssc = StreamingContext(sc,1)

broker = "<my_broker_ip>"
directKafkaStream = KafkaUtils.createDirectStream(ssc, ["test1"],
                        {"metadata.broker.list": broker})
directKafkaStream.pprint()
ssc.start()

注:pysparkを忘れないでください-環境変数のシェル!

Extension:spark-packagesからのコードを含める場合は、代わりに--packagesフラグを使用できます。 all-spark-notebookでこれを行う方法の例は、次のとおりです ここ

13
DDW

関連する環境変数を設定することにより、pysparkコマンドを使用してjupyterノートブックを実行できます。

export PYSPARK_DRIVER_PYTHON=jupyter
export IPYTHON=1
export PYSPARK_DRIVER_PYTHON_OPTS="notebook --port=XXX --ip=YYY"

xXXはノートブックへのアクセスに使用するポートで、YYYはIPアドレスです。

spark submitと同じように、pysparkを実行し、スイッチとして--jarsを追加するだけです。

1
Assaf Mendelson

sparkでjupyter-notebookを操作する場合は、sparkContextオブジェクトを作成する前に外部jarの場所を指定する必要があります。pyspark --jars youJarはsparkcontextを作成します外部jarの場所

0
prajwal

誰かが私と同じ場合:私は上記のすべての解決策を試しましたが、どれも私にはうまくいきません。私がやろうとしているのは、Jupyterノートブックで Delta Lake を使用することです。

最後に、最初にSparkContext.addPyFile("/path/to/your/jar.jar")を呼び出すことにより、from delta.tables import *を使用できます。 spark公式ドキュメントでは、.Zipまたは.pyファイルの追加についてのみ言及されていますが、.jarを試したところ、完全に機能しました。

0
Dd__Mad