Добавление пользовательских банках в pyspark в jupyter notebook
Я использую ноутбук Jupyter с Pyspark со следующим изображением докеры: Jupyter all-spark -notebook
Теперь я хотел бы написать приложение pyspark streaming, которое потребляет сообщения от Kafka. В руководстве Руководство по интеграции Spark-Kafka описывается, как развернуть такое приложение с помощью spark-submit (требуется привязка внешнего баннера - объяснение в 3. Развертывание). Но поскольку я использую ноутбук Jupyter, я никогда не запускаю команду spark-submit
, я предполагаю, что он будет запущен в спину, если я нажму кнопку execute.
В команде spark-submit
вы можете указать некоторые параметры, один из которых - -jars
, но мне непонятно, как я могу установить этот параметр из ноутбука (или извне через переменные среды?). Я предполагаю, что могу связать эту внешнюю банку динамически с помощью объекта SparkConf
или SparkContext
. Кто-нибудь знает, как правильно выполнить привязку из ноутбука?
Ответы
Ответ 1
Мне удалось заставить его работать из ноутбука jupyter, который работает из контейнера с полной искрой.
Я запускаю python3-ноутбук в jupyterhub и перезаписываю флаг 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-shell в переменных среды!
Расширение: Если вы хотите включить код из искровых пакетов, вы можете вместо этого использовать флаг -пакеты. Пример того, как это сделать в полностью искровой блокноте, можно найти здесь
Ответ 2
Вы можете запустить свой jupyter-ноутбук с помощью команды pyspark, установив соответствующие переменные среды:
export PYSPARK_DRIVER_PYTHON=jupyter
export IPYTHON=1
export PYSPARK_DRIVER_PYTHON_OPTS="notebook --port=XXX --ip=YYY"
а XXX - это порт, который вы хотите использовать для доступа к ноутбуку, а YYY - IP-адрес.
Теперь просто запустите pyspark и добавьте --jars в качестве переключателя так же, как вы бы запустили submit
Ответ 3
для работы на jupyter-notebook с искрой необходимо указать местоположение внешних jar файлов перед созданием объекта sparkContext. pyspark --jars youJar создаст спаркконтекст с расположением внешних банок