почему запись искрового фрейма данных в формат паркета вызывает случайное чтение? - PullRequest
0 голосов
/ 09 мая 2019

Я новичок в спарк и проверял интерфейс спарк для кода.Код для записи в паркетный формат:

     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 узлов.

enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...