2016-12-08 4 views
1

Если у нас есть несжатые 320 блоков файлов HDFS, хранящихся на кластере 16 узлов данных. Каждый узел 20 блоков, и если мы используем искру, чтобы прочитать этот файл в РДУ (без явной передачи numPartitions при создании RDD) textFile = sc.textFile("hdfs://input/war-and-peace.txt")Как файлы HDFS раздела Spark?

Если у нас 16 исполнителей по одному на каждом узле, сколько разделов Спарк RDD создадут для исполнителя? Будет ли он создавать один раздел на блок HDFS, т. Е. 20 разделов?

ответ

1

Если у вас есть 320 blocks из HDFS, то следующий код будет создавать RDD с 320 разделов:

val textFile = sc.textFile("hdfs://input/war-and-peace.txt") 

textFile() метод приводит к RDD, который поделен на same number of blocks как файл хранится на в HDFS.

Вы можете посмотреть в этом question, которые могут решить ваши вопросы о разделении

+0

Что это значит на 320 разделов RDD? Я понял, что в упомянутом выше сценарии он создаст в общей сложности 16 распределенных RDD по одному на каждом подчиненном узле, и каждый RDD на каждом подчиненном узле будет содержать 20 блоков файлов HDFS вместе? – zoe

+0

Он не будет создавать 16RDD, он создаст только один RDD с 320 разделами, а разделы будут распределены по подчиненным узлам. –

+0

Ваш ответ, вероятно, правильный, но я до сих пор не понимаю. Вы упомянули, что «Spark Partitions будут распределены между подчиненными узлами». Если это была коллекция Scala или Java, я получаю ее, но мой вопрос в том, почему Spark распространяет файлы HDFS дальше, когда файлы HDFS уже распространяются как блоки на подчиненных узлах? Вторая часть вопроса заключается в том, какой узел этот единственный RDD из 320 разделов живет на Мастере? или один из ведомых узлов? – zoe