При записи файла в HDFS с помощью Spark это происходит довольно быстро, если не используется секционирование. Вместо этого, когда я использую разбиение для записи файла, задержка записи увеличивается примерно в 24 раза.
Для того же файла запись без раздела занимает около 600 мс. Запись с разделением по идентификатору (сгенерирует ровно 1000 разделов, так как в файле 1000 идентификаторов) занимает около 14 секунд.
Кто-то из вас сталкивался с тем, что запись файла с разделами занимает очень много времени? В чем основная причина этого, возможно, Spark необходимо создать 1000 папок и файлов для каждого раздела? У вас есть идея, как это можно ускорить?
val myRdd = streamedRdd.map { case ((id, metric, time), value) => Record(id, metric, getEpoch(time), time, value) }
val df = myRdd.toDF
df.write.mode(SaveMode.Append)
.partitionBy("id")
.parquet(path)