TGViewer
дата инженеретта дата инженеретта @data_engineerette · 3.43K subscribers
Post #351 3.34K
Committers in Spark

В спарке есть такая штука, как коммиттеры. Они нужны, чтобы пользователи видели только успешные финальные результаты. Их несколько:

File Output Committer

v1

"spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version" = 1


Сначала все файлы пишутся во временные папки в attempt/, потом перекладываются (по сути rename) в task/ и в самом конце в корень вашей папки. Тут упор на надежность: если что-то упало, то оно перезапустится и не попадет в конечную папку, пока не отработает

v2

"spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version" = 2


Здесь файлы пишутся в attempt/, а потом сразу перемещаются в корень вашей папки. Тут упор на производительность: нет дополнительного шага, но если что-то пойдет не так, то останутся куски файлов

S3A Committers

Для работы с s3 есть magic и staging. Предыдущие не подходят, т.к. переименование реализовано как копирование и удаление. И если файлов много, то это очень долгая операция

magic

"spark.hadoop.fs.s3a.committer.name" = "magic"
"spark.hadoop.fs.s3a.committer.magic.enabled" = "true"


Файлы пишутся сразу в корень, но облако должно быть консистентным. Появился в конце 2021

staging

С ним я не игралась, но суть в том, что сами файлы пишутся в стейджинг на hdfs (отсюда и название), а потом грузятся в s3

_SUCCESS

Возможно, вы когда-нибудь заглядывали в файл _SUCCESS. Если писать алгоритмами v1/v2, то он будет пустым. А вот пример с magic:

{
"name" : "org.apache.hadoor.fs.3a.commit. files.SuccessData/1",
"timestamp" : 1744183768995,
"date" : "Wed Apr 09 10:29:28 MSK 2025",
"committer" : "magic",
"description" : "Task committer attempt_202504091019345870801396712503545_6660_m_1000000_0",
"metrics" : {
"stream_write_block_uploads" : 0,
"files_created" : 1,
"stream_closed" : 200,
...
  • 🔥 20
More from @data_engineerette
  1. Sep 24, 2026Исследование data-people Тут ребята из DevCrowd запустили ежегодное исследование специалис…
  2. Sep 22, 20265 октября начнется 19-й поток программы Data Engineer от Newprolab Программа для junior- и…
  3. Sep 15, 2026Каким должен быть хороший DE? Меня однажды спросили на собесе: 🤩Какие 3 качества важны дл…
  4. Sep 12, 2026Mermaid-диаграммы Наконец-то дошли руки поковыряться в mermaid-диаграммах, это что за имба…
  5. Sep 2, 2026Iceberg — это внезапный бум или планомерная подготовка? Заметили, как с определенного моме…
  6. Aug 25, 2026Как забытый ON CLUSTER поставил меня в тупик Я создала таблицу ReplicatedReplacingMergeTre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →