Как включить внешнюю библиотеку Spark при использовании PySpark в блокноте Jupyter - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь запустить следующую потоковую передачу PySpark-Kafka пример в блокноте Jupyter. Вот первая часть кода, который я использую в своей записной книжке:

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

sc = pyspark.SparkContext(master='local[*]',appName="PySpark streaming")
ssc = StreamingContext(sc, 2)

topic = "my-topic"
brokers = "localhost:9092"
kvs = KafkaUtils.createDirectStream(ssc, [topic], {"metadata.broker.list": brokers})

Если я запускаю ячейку, я получаю следующую ошибку / описание:

Spark Streaming's Kafka libraries not found in class path. Try one of the following.

1. Include the Kafka library and its dependencies with in the
 spark-submit command as

$ bin/spark-submit --packages org.apache.spark:spark-streaming-kafka-0-8:2.3.0 ...

2. Download the JAR of the artifact from Maven Central http://search.maven.org/,
Group Id = org.apache.spark, Artifact Id = spark-streaming-kafka-0-8-assembly, Version = 2.3.0.
Then, include the jar in the spark-submit command as

$ bin/spark-submit --jars <spark-streaming-kafka-0-8-assembly.jar> ...

Мои вопросы: как передать аргумент --jars или --package в блокнот Jupyter? Или я могу загрузить этот пакет и навсегда связать его с Python / Jupyter (возможно, через экспорт в .bashrc)?

1 Ответ

0 голосов
/ 30 июня 2018

Существует как минимум два способа сделать это, примерно соответствующие двум вариантам, предложенным в сообщении об ошибке:

Первый способ - соответственно обновить соответствующее ядро ​​Jupyter (если вы еще не используете ядра Jupyter, вы должны - см. этот ответ для подробного описания использования ядер в Jupyter для Pyspark).

В частности, вы должны обновить соответствующий файл конфигурации kernel.json для Pyspark, введя следующую запись в env (если вы используете что-то другое, чем --master local, измените соответственно):

"PYSPARK_SUBMIT_ARGS": "--master local --packages org.apache.spark:spark-streaming-kafka-0-8:2.3.0 pyspark-shell"

Второй способ заключается в добавлении в файл spark-defaults.conf следующей записи:

spark.jars.packages org.apache.spark:spark-streaming-kafka-0-8:2.3.0

В обоих случаях вам не нужно ничего скачивать вручную - при первом запуске Pyspark с обновленной конфигурацией необходимые файлы будут загружены и помещены в соответствующие каталоги.

...