2016-11-18 5 views
1

Меня немного смущает количество задач, созданных Spark при чтении нескольких текстовых файлов.Как искра определяет количество задач?

Вот код:

val files = List["path/to/files/a/23", 
       "path/to/files/b/", 
       "path/to/files/c/0"] 
val ds = spark.sqlContext.read.textFile(files :_*) 
ds.count() 

Каждая из папок a, b, c содержит 24 файлов, так что в общей сложности 26 файлов с полной b папки для чтения. Теперь, если я выполняю действие, например .count(), пользовательский интерфейс Spark показывает мне, что есть 24 задачи. Однако я бы подумал, что есть 26 задач, как в 1 задаче на раздел и 1 разделе для каждого файла.

Было бы здорово, если бы кто-то мог дать мне больше информации о том, что на самом деле происходит.

+1

Что такое общее количество ядер, которые вы используете для работы? И вы задали какие-либо конфигурации? –

+0

Чтобы было легко понять. Можете ли вы разместить свой код и информацию об искру. –

+0

@SimonSchiff Я использовал 8 ядер, и у меня нет ничего, что я знаю. Однако это кажется правильным направлением. Я попытался выполнить код на более крупной машине, и у нее ожидалось 26 задач. –

ответ

0

Текстовые файлы загружаются с использованием форматов Hadoop. Количество перегородок зависит от:

  • mapreduce.input.fileinputformat.split.minsize
  • mapreduce.input.fileinputformat.split.maxsize
  • minPartitions аргумент, если это предусмотрено
  • размер блока сжатия
  • если она присутствует (splitable/не-splitable).

Вы найдете пример вычисления здесь: Behavior of the parameter "mapred.min.split.size" in HDFS

 Смежные вопросы

  • Нет связанных вопросов^_^