Обновленный вопрос
Что мне непонятно => в ShuffleMapStage каждый Mapper создаст .data и .index file
Эти data / index будут иметь имя подобно
shuflle_X_Y_Z
где
X = shuffle_id
Y = map_id
Z = REDUCER_ID
I Понимание map_id может варьироваться от 1-222394
НО КАК О REDUCER_ID ?
это так1-200 (например, раздел по умолчанию для ResultStage)?
это = число исполнителей?
, если это 1-200, то делаетКак эти 200 задач знают, какие данные / индексный файл читать?
Помогите мне понять, что
Я не понимаю, как Уменьшить / Агрегировать задачи работают? Скажем, у меня есть простой пример, например
input_df = spark.read.parquet("Big_folder_having parquets")
# Spark loads and during reading partitions = as per number of files * number of 128MB blocks.
# Now I do a Simple Aggergation/Count
input_df.createOrReplaceTempView("table1")
grouped_df = spark.sql("select key1, key2, count(1) as user_count from table1 group by 1,2")
# And simply write it with default 200 parallelism
grouped_df.write.format("parquet").mode("overwrite").save(my_save_path)
Так что для входная нагрузка родительский rdd / входная карта Этап имеет 22394 разделов
Как я понимаю, каждый картограф создаст файл данных и индекса shuflle
Теперь Следующий этап имеет только 200 задач ( разделы по умолчанию в случайном порядке )
Как эти 200 редукторов / задач могут обрабатывать выходные данные из 22394 задач mapper ?
В приложении Снимок экрана DAG