Я запускаю spark job
в кластере, который имеет 2 рабочих узла! Я использую код ниже (искра Java) для сохранения вычисленного фрейма данных в виде CSV на рабочих узлах.
dataframe.write().option("header","false").mode(SaveMode.Overwrite).csv(outputDirPath);
Я пытаюсь понять, как spark записывает несколько файлов деталей на каждом рабочем узле.
Run1) worker1
имеет part files
и SUCCESS
; worker2
имеет _temporarty/task*/part*
для каждой задачи выполняются файлы детали.
Run2) worker1
содержит файлы деталей, а также каталог _temporary
; worker2
имеет multiple part files
Может кто-нибудь помочь мне понять, почему это поведение?
1) Должен ли я рассматривать записи в outputDir/_temporary
как часть выходного файла вместе с part files in outputDir
?
2) Должен ли _temporary
dir быть удален после запуска задания и переместить файлы part
в outputDir
?
3) почему он не может создавать файлы деталей непосредственно под выходным каталогом?
coalesce(1)
и repartition(1)
не могут быть опцией, так как сам файл outputDir будет около 500GB
Spark 2.0.2. 2.1.3
и Java 8, no HDFS