Почему Spark создает меньше разделов, чем число файлов при чтении с S3 - PullRequest
0 голосов
/ 06 ноября 2018

Я использую Spark 2.3.1.

У меня есть работа, которая считывает 5.000 маленьких файлов паркета в s3.

Когда я выполняю mapPartitions, за которым следует collect, используются только 278 задач (я бы ожидал 5000). Почему?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Если вы хотите использовать задачу 5000, вы можете выполнить преобразование перераспределения.

Цитата из документов о переделе:

Произвольно перетасуйте данные в RDD, чтобы создать больше или меньше перегородки и балансировать их между собой. Это всегда тасует все данные по сети.

Я рекомендую вам взглянуть на Руководство по программированию СДР . Помните, что перемешивание - это дорогостоящая операция.

0 голосов
/ 06 ноября 2018

Spark объединяет несколько файлов в каждый раздел из-за их небольшого размера. Вы должны увидеть столько же, когда распечатаете разделы.

Пример (Scala):

val df = spark.read.parquet("/path/to/files")
df.rdd.partitions.foreach(println)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...