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

Меня немного смущает количество задач, которые создаются 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 ответ

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

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

Вы можете найти примеры вычислений здесь: Поведение параметра "mapred.min.split.size" в HDFS

Другие вопросы по тегам