В соответствии с архитектурой spark он пытается создать раздел для файлов данных, находящихся в HDFS, и по умолчанию он основан на размере блока HDFS, который у вас есть. Если у вас есть небольшие файлы в hdfs, он попытается получить столько же блоков на файл в HDFS, что закончилось созданием столько разделов в spark, что может привести к снижению производительности, так как в нем задействовано много операций случайного перемешивания, а перемешивание обходится дороже. spark.
В вашем случае, если вы храните файл каждые пять минут и если он маленький, вы можете объединить его в один файл для паркета. Но это действие нужно сделать отдельно в Spark, где вы можете объединить все небольшие паркетные файлы и создать один паркет, а затем обработать созданный большой паркетный файл.
Еще один обходной путь: если вы хотите сделать это одним скриптом без проблем с производительностью, загрузите небольшие файлы паркета как есть, затем используйте объединение или перераспределение, чтобы создать меньше разделов, что, в свою очередь, ускоряет обработку. Делайте выбор аккуратно, если вы хотите использовать перераспределение или объединение.
Я могу поделиться здесь фрагментом кода, чтобы сделать это,
data = spark.read.parquet("/my_parquet_table/year=2020/month=01/day=31/")
pdata = data.reshuffle(5) # here number of partition I put 5, but you can determine this number per data you receive every day
#use pdata for further operation
Итак, в конце у вас есть два варианта: создать отдельный Сценарий, который объединит небольшой файл паркета в один файл или, если вы не хотите делать это отдельно, перераспределяет или объединяет данные в меньшее количество разделов и обрабатывает данные.