#python #pyspark #apache-kafka
#python #pyspark #apache-kafka
Вопрос:
В настоящее время я пишу потоковое приложение spark, для которого требуется несколько зависимостей и конфигураций. Прямо сейчас я должен запустить свое задание spark со следующим кодом:
spark-submit --packages org.apache.spark:spark-streaming-kafka-0-8_2.11:2.4.6,org.apache.spark:spark-streaming-kafka-0-8-assembly_2.11:2.4.6 --conf spark.mongodb.input.uri=mongodb://127.0.0.1/test.coll --conf spark.mongodb.output.uri=mongodb://127.0.0.1/test.coll mongodbtest.py
Это работает, но это довольно громоздкая команда для отправки, и я хотел бы разместить эти зависимости где-нибудь, где я могу просто запустить
spark-submit mongodbtest.py
Я уже пробовал указывать PYSPARK_SUBMIT_ARGS
в os.environ
следующим образом:
os.environ['PYSPARK_SUBMIT_ARGS'] = '--conf spark.mongodb.input.uri=mongodb://127.0.0.1/test.coll '
'--conf spark.mongodb.output.uri=mongodb://127.0.0.1/test.coll'
'--packages org.apache.spark:spark-streaming-kafka-0-8:2.4.6'
Но запуск spark-submit mongodbtest.py
с приведенной выше строкой, включенной в файл python, приводит к следующей ошибке:
________________________________________________________________________________________________
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.4.6 ...
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.4.6.
Then, include the jar in the spark-submit command as
$ bin/spark-submit --jars <spark-streaming-kafka-0-8-assembly.jar> ...
________________________________________________________________________________________________
и задание завершается с ошибкой. Куда я могу включить информацию о конфигурации и зависимостях, чтобы мне не приходилось включать всю эту информацию каждый раз, когда я отправляю задание spark в командной строке? Спасибо.
Комментарии:
1. Вы изучали Apache Livy ? Это лучший способ отправки приложений spark, где вы создаете файл json для всех реквизитов и отправляете задание по HTTP-запросу.
2. FWIW, если вы хотите использовать Kafka и Mongo, было бы разумнее использовать структурированную потоковую передачу или зависимость spark-sql-kafka
3.
PYSPARK_SUBMIT_ARGS
должно работать, но его необходимо загрузить перед созданием SparkSession