Spark-submit в режиме кластера - PullRequest
0 голосов
/ 28 апреля 2020

У меня проблема с запуском Spark Application в режиме кластера.

Это. sh:

export SPARK_MAJOR_VERSION=2
spark-submit \
  --master yarn \
  --deploy-mode cluster \
  --driver-memory 8G \
  --executor-memory 8G \
  --total-executor-cores 4 \
  --num-executors 4 \
  /home/hdfs/spark_scripts/ETL.py &> /home/hdfs/spark_scripts/log_spark.txt

В журналах YARN я обнаружил, что есть Import Ошибка, связанная с файлом .py, который мне нужен в файле "ETL.py". Другими словами, в «ETL.py» у меня есть строка, в которой я делаю это: import AppUtility

AppUtilit.py находится на том же пути, что и ETL.py. В локальном режиме это работает Это журнал YARN: 20/04/28 10:59:59 INFO compress.CodecPool: Получен новый декомпрессор [.deflate] Контейнер: container_e64_1584554814241_22431_02_000001 в ftpandbit02.carte.local_45454 LogAggregationTypeTime Тип: AGT Возраст: 28-летняя возрастная категория: год: год-год-год: 10:57:10 +0200 2020 LogLength: 138 LogContents: трассировка (последний последний вызов): файл "ETL.py", строка 8, в импорте AppUtility ImportError: нет модуля с именем AppUtility

Конец LogType: stdout


Конец LogType: prelaunch.err

1 Ответ

1 голос
/ 28 апреля 2020

Это зависит от режима клиента или режима кластера.

  • Если вы используете Spark в режиме клиента Yarn, вам нужно будет установить любые зависимости на машины, на которых Yarn запускает исполнители. Это единственный верный способ заставить это работать.

  • Использование Spark с режимом кластера пряжи - это отдельная история. Вы можете распространять python зависимостей с помощью

spark-submit ./bin/spark-submit - py-files AppUtility.py / home / hdfs / spark_scripts / ETL.py

Директива --py-files отправляет файл работникам Spark, но не добавляет его в PYTHONPATH.

Чтобы добавить зависимости в PYTHONPATH для исправления ошибки ImportError, добавьте следующую строку в задание Spark: ETL.py

s c .addPyFile (PATH)

PATH : AppUtility.py (Это может быть локальный файл, файл в формате HDFS, zip или HTTP, HTTPS или FTP URI)

...