Как Spark определяет количество разделов при чтении файла? - PullRequest
1 голос
/ 01 марта 2020

Как Spark определяет количество разделов при чтении файла?

Предположим, у нас есть один файл размером 10 ГБ в каталоге hdfs и файлы из нескольких частей общим объемом 10 ГБ в другом месте hdfs.

Если эти два файла читаются в двух отдельных кадрах данных spark каково будет их количество разделов и на основании каких логи c?

1 Ответ

0 голосов
/ 01 марта 2020

Нашел информацию в Как: определить раздел Там написано:

Как определяется это число? Как Spark группирует СДР по этапам, описано в предыдущем посте. (Как быстрое напоминание, такие преобразования, как перераспределение и reduByKey, вызывают границы этапа.) Количество задач на этапе совпадает с количеством разделов в последнем СДР на этапе. Количество разделов в RDD такое же, как и количество разделов в RDD, от которых оно зависит, за исключением нескольких: преобразование coalesce позволяет создать RDD с меньшим количеством разделов, чем его родительский RDD, преобразование объединения создает RDD с сумма количества разделов своих родителей, и декартово создает RDD со своим продуктом.

А как насчет RDD без родителей? Разделы RDD, создаваемые textFile или hadoopFile, определяются в соответствии с используемым базовым MapReduce InputFormat. Обычно для каждого читаемого блока HDFS создается раздел. Разделы для RDD, создаваемых распараллеливанием, берутся из параметра, заданного пользователем, или spark.default.parallelism, если ничего не задано.

Когда Spark читает файл из HDFS, он создает один раздел для сплит с одним входом. Разделение ввода задается с помощью Had oop InputFormat, используемого для чтения этого файла. Например, если вы используете textFile (), это будет TextInputFormat в Had oop, который вернет вам один раздел для одного блока HDFS (но разделение между разделами будет выполняться при разделении строк, а не при точном разделении блоков). ), если у вас нет сжатого текстового файла. В случае сжатого файла вы получите один раздел для одного файла (поскольку сжатые текстовые файлы не разделяются).

Если у вас есть несжатый текстовый файл 10 ГБ, хранящийся в HDFS, то с размером блока HDFS по умолчанию установка (128 МБ) будет храниться в 79 блоках, что означает, что СДР, которую вы читаете из этого файла, будет иметь 79 разделов.

Кроме того, мы можем передать желаемое количество разделов, если мы не удовлетворены количество разделов, предоставляемых спарк по умолчанию, как показано ниже:

>>> rdd1 = sc.textFile("statePopulations.csv",10) // 10 is number of partitions 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...