Мой скрипт ETL читает три таблицы из реляционной базы данных, выполняет некоторые операции через PySpark и загружает это в мое хранилище S3 (с S3a).
Вот код, который делает загрузку:
dataframe.write.mode("overwrite").partitionBy("dt").parquet(entity_path)
У меня около 2 миллионов строк, написанных на S3 в паркетных файлах, разбитых по дате ('dt').
Мой сценарий занимает более двух часов, чтобы выполнить эту загрузку на S3 (это очень медленно), и он выполняется на кластерах данных в кластере с:
3-8 Workers: 366.0-976.0 GB Memory, 48-128 Cores, 12-32 DBU
Я пришел к выводу, что проблема при загрузке, я не могу понять, что происходит.
Обновление:
Используя repartition('dt')
время выполнения было сокращено до ~ 20 минут. Это помогает мне, но я думаю, что оно должно быть выполнено за меньшее время.