Я видел, как утверждается, что задания являются идемпотентными, когда мы пишем работу с большими данными, используя MR, Spark или Tez в качестве механизма выполнения.
Задание сначала записывает данные во временный каталог, т. Е. ".Hivestaging ..." или "_teven"
Затем данные объединяются в конечный пункт назначения с помощью FileOutputCommitter по следующим критериям:
- Если каталог назначения уже имеет каталог, он удаляется.
- Каталог перемещен из временного местоположения в местоположение назначения.
Мой вопрос: почему мы говорим, что работа идемпотентна, либо она будет успешной, либо неудачной? Не может ли быть случай, когда некоторые данные перемещаются в корзину, и заданию не удалось переместить файлы из временного каталога в место назначения, что привело к сбою задания и потере данных?