Я новичок в Spark и пытаюсь понять его внутренности. Итак, я читаю небольшой паркетный файл размером 50 МБ из s3 и выполняю группировку, а затем сохраняю обратно в s3. Когда я наблюдаю за пользовательским интерфейсом Spark, я вижу 3 этапа, созданных для этого:
этап 0: загрузка (1 задача)
этап 1: случайный запрос, этап для группировки (12 задач)
этап 2: сохранить (coalescedshufflereader) (26 задач)
Пример кода:
df = spark.read.format("parquet").load(src_loc)
df_agg = df.groupby(grp_attribute)\
.agg(F.sum("no_of_launches").alias("no_of_launchesGroup")
df_agg.write.mode("overwrite").parquet(target_loc)
Я использую экземпляр EMR с 1 главным узлом, 3 основными узлами (каждый с 4 ядрами). Итак, параллелизм по умолчанию равен 12. Я не меняю никаких конфигураций во время выполнения. Но я не могу понять, почему на финальном этапе создается 26 задач? Насколько я понимаю, по умолчанию раздел в случайном порядке должен быть 200. Скриншот пользовательского интерфейса прилагается.
введите описание изображения здесь