Внешние пакеты (банки) в оболочке pyspark - How To - PullRequest
0 голосов
/ 11 декабря 2019

Как правильно включить внешние пакеты (jar-файлы) в оболочку pyspark?

Я использую pyspark из ноутбука jupyter.

Я хотел бы прочитать из kafka с помощью spark через библиотеку spark-sql-kafka, как описано здесь: https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html#deploying.

Я пытаюсь импортировать библиотеку с помощью опции --packages,установить в переменную окружения PYSPARK_SUBMIT_ARGS.

Но

  • Я не уверен в точной версии и названии используемого пакета,
  • Не знаюЯ не знаю, нужно ли мне также включить потоковую передачу или нет, нужно ли указать какой-нибудь репозиторий с --repositories или нет,
  • . Не знаю, лучше ли скачать jar и указать локальные пути(должны ли они быть на машине, где работает jupyter, или на машине, где работает пряжа? Я использую --master yarn и --deploy-mode client) или полагаться на --packages
  • Донне знаю, пропущены ли опции, указанные после pyspark-shell в PYSPARK_SUBMIT_ARGS или нет (если я попытаюсь указать опции --packages до pyspark-shell, я вообще не смогу создать экземпляр контекста spark)
  • Как я могу проверить, правильно ли загружен какой-либо пакет и доступен ли он для использования
  • Я не знаю, по какому маршруту идут такие загруженные банки (или банки вообще). Сколько раз они тиражируются? Они проходят через водителя? Меняются ли эти вещи, если я использую менеджер кластера в качестве YARN? Меняются ли они, если я использую все, начиная от спарк-оболочки в ноутбуке Jupyter?

Ресурсы, которые я прочитал до сих пор:

Документы и руководства:

Структурированная потоковая интеграция с kafka

Конфигурация Spark

Заявки, подающие Spark

Блокнот Zeppelinдокументация по режиму кластера

jaceklakowski по spark-submit, параметры конфигурации, записные книжки, контекст spark и т. д.

pyspark docs

применение искры для зданий Cloudera

Руководство по программированию потокового структурированного Spark

Примеры:

ноутбукс искровой структурированной потоковой передачей и искровой sql kafka

dzone базовый пример для искровой структурированной потоковой передачи

Проблемы и вопросы:

структурированныйпотоковая передача с использованием kafka в качестве источника с python

Процесс шлюза Java завершенили отправляя драйверу его номер порта

поддерживает ли pyspark потоковую искру kafka 0-10-lib

добавление пользовательских jar-файлов в pyspark в блокноте jupyter

Репозитории:

spark-sql-kafka на search.maven.org

spark-sql-kafka в MVN-репозитории

Ответы [ 2 ]

1 голос
/ 12 декабря 2019

Для простоты я попытался бы сначала заставить все работать вне Jupyter


точную версию и имя пакета для использования

Требуется версиясоответствовать вашей версии Spark. Используйте пакет, который вы хотите скачать.

Я не знаю, нужно ли мне также включать потоковое искрение или нет

Не делать. Это уже на пути к классу ваших работников Spark.

независимо от того, должен ли я указать какой-либо репозиторий с --repositories или нет,

Если вы можете загружать файлы непосредственно из Maven Central, то нет.

лучше ли скачать jar и указать локальные пути

Возможно, вам следует использовать --packages, который загрузит файлы для вас. Режим развертывания и кластер не мешают этому.

, если параметры, указанные после pyspark-shell в PYSPARK_SUBMIT_ARGS, пропущены или нет

Не должно быть, хотя обычно я вижу pyspark-shell в качестве последней опции.

import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages ... pyspark-shell'

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

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

Как проверить, правильно ли загружен какой-либо пакет

Вы получите NoClassDefFound, например, при запуске, если он не был загружен.

по какому пути следуют такие загруженные банки (или банки вообще)

Там $SPARK_HOME/jars, но любые --jars или --packages кэшируются впапка ~/.m2 на каждом компьютере для пользователя, выполняющего задание, обычно затем вставляется в работающий контейнер YARN / исполнителя Spark.

0 голосов
/ 13 декабря 2019

Когда вы хотите импортировать внешние пакеты в оболочке Pyspark, во время самого запуска мы можем назвать это так, как мы делаем spark-submit.

> ./bin/pyspark --packages
> org.apache.spark:spark-sql-kafka-0-10_2.11:2.2.0,com.databricks:spark-avro_2.11:3.2.0
> --conf spark.ui.port=4055 --files /home/bdpda/spark_jaas,/home/bdpda/bdpda.headless.keytab --conf
> "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=/home/bdpda/spark_jaas"
> --conf "spark.driver.extraJavaOptions=-Djava.security.auth.login.config=/home/bdpda/spark_jaas

Примечание : Эта отправка pyspark используется для того же варианта использования для подключения Pyspark со структурированной потоковой передачей Kafka.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...