Использовать существующий SparkSession в POST/ пакетном запросе
Я пытаюсь использовать Livy
удаленно отправить несколько Spark
рабочие места. Допустим, я хочу выполнить следующее spark-submit
задание удаленно (со всеми опциями как таковыми)
spark-submit \
--class com.company.drivers.JumboBatchPipelineDriver \
--conf spark.driver.cores=1 \
--conf spark.driver.memory=1g \
--conf spark.dynamicAllocation.enabled=true \
--conf spark.serializer='org.apache.spark.serializer.KryoSerializer' \
--conf "spark.executor.extraJavaOptions= -XX:+UseG1GC" \
--master yarn \
--deploy-mode cluster \
/home/hadoop/y2k-shubham/jars/jumbo-batch.jar \
\
--start=2012-12-21 \
--end=2012-12-21 \
--pipeline=db-importer \
--run-spiders
ПРИМЕЧАНИЕ. Параметры после JAR
( --start
, --end
и т. д.) являются специфичными для моего Spark
приложение. я использую scopt
за это
Я знаю, что могу предоставить все различные варианты выше
spark-submit
использование командыLivy
POST/batches
запрос.Но так как я должен сделать более 250
spark-submit
удаленно, я хотел бы использоватьLivy
возможности управления сессиями; т.е. я хочуLivy
создатьSparkSession
один раз, а затем использовать его для всех моихspark-submit
Запросы.POST/sessions
Запрос позволяет мне указать довольно много вариантов созданияSparkSession
удаленно. Тем не менее, я не вижуsession
аргумент вPOST/batches
запрос.
Как я могу использовать SparkSession
что я создал с помощью POST/sessions
запрос на отправку моего Spark
использование работы POST/batches
запрос?
Я ссылался на следующие примеры, но они только демонстрируют python
) код для Spark
работа в Livy
"s POST
запрос
pi_app
rssanders3/airflow-spark-operator-plugin
livy/examples
0 ответов
Как я могу использовать
SparkSession
что я создал с помощьюPOST/sessions
запрос на отправку моегоSpark
использование работыPOST/batches
запрос?
- На данном этапе я почти уверен, что это сейчас невозможно
- Комментарий @Luqman Ghani дает довольно хороший намек на то, что
batch
-режим предназначен для другого варианта использования, чемsession
-Режим /LivyClient
Причина, по которой я определил, почему это невозможно, (пожалуйста, исправьте меня, если я ошибаюсь / не укомплектована) следующим образом
POST/batches
запрос принимаетJAR
- Это тормозит
SparkSession
(или жеspark-shell
) от повторного использования (без перезапускаSparkSession
) так как- Как бы вы удалили
JAR
от предыдущегоPOST/batches
запрос? - Как бы вы добавили
JAR
от текущегоPOST/batches
запрос?
- Как бы вы удалили
А вот более полная картина
- На самом деле
POST/sessions
позволяет вам пройтиJAR
- но затем дальнейшие взаимодействия с этим
session
(очевидно) не может взятьJAR
s - они (дальнейшее взаимодействие) могут быть только простыми сценариями (например,
PySpark
: простоpython
файлы), которые могут быть загружены вsession
(и неJAR
s)
Возможное решение
- Все те, у кого есть
Spark
-приложение написано вScala
/Java
, который должен быть в комплектеJAR
, столкнется с этой трудностью;Python
(PySpark
) пользователям здесь везет - В качестве возможного обходного пути, вы можете попробовать это (я не вижу причин, почему это не сработает)
- запустить
session
с вашимJAR
с помощьюPOST/sessions
запрос - затем вызвать точку входа-
class
от твоегоJAR
с помощьюpython
(ОтправитьPOST /sessions/{sessionId}/statements
) столько раз, сколько вы хотите (возможно, с другими параметрами). Хотя это не так просто, звучит очень возможно
- запустить
Наконец я нашел еще несколько альтернатив Livy
для удаленногоspark-submit
; видеть это