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