Я новичок в спарк и проверял интерфейс спарк для кода.Код для записи в паркетный формат:
df
.write
.option("maxRecordsPerFile", numberOfRowsPerFile)
.mode("append")
.partitionBy("segment_shard", "h", "created_dt", "batch")
.parquet(s"$storagePath/")
, где сегмент_шард вычисляется следующим образом,
def segmentSharder(segmentUid: String): String = {
Math.abs(XxHash64Function.hash(segmentUid.getBytes(), StringType, 0L) % 100).toString
}
, поэтому, насколько я понимаю, каждый случайный раздел (по умолчанию 200) будет разбивать данные наэти 4 типа (сегмент_шард (100) * ч (1) * созданный_ст (1) * пакет (1)), таким образом, всего 100 паркетных перегородок.Тогда каждый раздел записывает один файл в соответствующий раздел.Я говорю это потому, что у меня есть 200 файлов для каждого сегмента.
Теперь, после детального анализа на этом этапе, в интерфейсе пользователя AWS EMR я могу видеть значения в режиме случайного чтения, случайного чтения в удаленном режиме, чего я не делал.ожидаю. (Я виню свое понимание).Кто-нибудь может объяснить, почему это так?Подробности EMR - ведущий и ведомый узлы типа r4.xlarge (30 гигов, 4 ядра), 50 узлов.

