Используйте промежуточный каталог GCS для заданий Spark (на Dataproc) - PullRequest
3 голосов
/ 20 июня 2019

Я пытаюсь изменить промежуточный каталог Spark, чтобы предотвратить потерю данных при выводе рабочих из эксплуатации (в gataproc с Spark 2.4).
Я хочу переключить подготовку HDFS на подготовку Google Cloud Storage.

Когда я запускаю эту команду:

spark-submit --conf "spark.yarn.stagingDir=gs://my-bucket/my-staging/"  gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py

У меня есть эта ошибка:

org.apache.spark.SparkException: приложение application_1560413919313_0056 не удалось 2 раза из-за того, что AM-контейнер для appattempt_1560413919313_0056_000002 завершен с exitCode: -1000

Неудачная попытка. Диагностика: [2019-06-20 07: 58: 04.462] Файл не найден: gs: /my-staging/.sparkStaging/application_1560413919313_0056/pyspark.zip java.io.FileNotFoundException: файл не найден: gs: /my-staging/.sparkStaging/application_1560413919313_0056/pyspark.zip

Задание Spark не выполнено, но в GCS создан каталог .sparkStaging/.

Есть идеи по этому вопросу?

Спасибо.

1 Ответ

2 голосов
/ 20 июня 2019

Во-первых, важно понимать, что промежуточный каталог в основном используется для размещения артефактов для исполнителей (в основном, jar-файлов и других архивов), а не для хранения промежуточных данных при выполнении задания. Если вы хотите сохранить промежуточные данные задания (в основном, данные в случайном порядке) после вывода работника из эксплуатации (например, после машины вытеснение или уменьшение масштаба), тогда Режим расширенной гибкости Dataproc (в настоящее время в альфа-версии) может помочь вам.

Ваша команда работает для меня как в версиях Dataproc 1.3, так и в 1.4. Убедитесь, что ваше целевое промежуточное хранилище существует и что кластер Dataproc (т. Е. Учетная запись службы , под которой работает кластер) имеет права на чтение и запись в корзину. Обратите внимание, что соединитель GCS не будет создавать для вас сегменты.

...