Если ваша проблема в слишком большом количестве файлов, что, по-видимому, имеет место, вам необходимо переразметить ваш RDD / dataframe перед тем, как его записать. Каждый раздел RDD / Dataframe генерирует 1 файл на папку.
df.repartition(1)\
.write.mode("overwrite")\
.partitionBy('ref_id','date','camera_id')\
.parquet('s3a://mybucket/tmp/test_data')
В качестве альтернативы repartition
вы также можете использовать coalesce
.
Если (после переразбиения на 1) файлы слишком малы, вам , необходимо уменьшить структуру каталогов. Документация паркета рекомендует размер файла от 500 МБ до 1 ГБ.
https://parquet.apache.org/documentation/latest/
Мы рекомендуем большие группы строк (512 МБ - 1 ГБ). Поскольку может потребоваться чтение всей группы строк, мы хотим, чтобы она полностью помещалась в одном блоке HDFS.
Если ваши файлы имеют размер несколько Кб или Мб, то у вас есть серьезная проблема, это серьезно плохое выступление.