Apache Spark (Hadoop) Записывает файл _SUCCESS дважды - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть задание Apache Spark, которое записывает набор данных паркета в хранилище BLOB-объектов Azure V2.

У меня также есть триггер в фабрике данных Azure, который ищет записываемый файл _SUCCESS, чтобы начать другую обработку.

Кажется, что запись либо записывает, либо касается файла _SUCCESS несколько раз, что, по-видимому, не является ожидаемым поведением в функции commitJob Hadoop (https://hadoop.apache.org/docs/r2.4.1/api/src-html/org/apache/hadoop/mapreduce/lib/output/FileOutputCommitter.html#line.305)

Файл _SUCCESSобычно переписывается / изменяется в ту же секунду или близко к той же секунде, что и исходная запись.

Существует два основных вопроса: 1) Это ожидаемое поведение?2) Возможны ли изменения конфигурации, чтобы обеспечить ровную запись 1 _SUCCESS файла, если задание выполнено успешно?(Я знаю, что можно отключить запись _SUCCESS, но это полезно)

В документации Hadoop ясно, что commitJob предназначен для гарантированного запуска только один раз.

https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapred/FileOutputCommitter.html#commitJob(org.apache.hadoop.mapred.JobContext)

...