У меня есть искровой процесс, который пишет в hdfs (файлы паркета). Я предполагаю, что по умолчанию, если спарк имеет некоторый сбой и повтор, он может записать несколько файлов дважды (я не прав?).
Но тогда, как мне сделать, чтобы получить идемпотентность на выходе hdfs?
Я вижу две ситуации, которые следует задавать по-разному (но, пожалуйста, исправьте меня или разработайте, если вы знаете лучше):
- ошибка возникает при записи одного элемента: я думаю, что записи перезапустил, таким образом мог написать дважды, если пост на hdfs не "atomi c" по отношению к вызову записи write. Каковы шансы?
- сбой происходит в любом месте, но из-за того, как выполняется даг выполнения, перезапуск произойдет в задаче, которая предшествует нескольким задачам записи (я думаю о необходимости перезапуска до некоторые groupBy например), и некоторые из этих задач записи были уже выполнены. Гарантирует ли исполнение spark, что эти задачи больше не будут вызываться?