火花如何决定任务的数量?

时间:2016-11-18 14:33:04

标签: apache-spark task apache-spark-dataset

我对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个文件,因此自读取完整的b文件夹以来总共有26个文件。现在如果我执行一个动作,比如.count(),Spark UI会告诉我有24个任务。但是,我认为有26个任务,如每个分区1个任务和每个文件1个分区。

如果有人能够更深入地了解实际发生的事情,那将会很棒。

1 个答案:

答案 0 :(得分:1)

使用Hadoop格式加载文本文件。分区数取决于:

  • mapreduce.input.fileinputformat.split.minsize
  • mapreduce.input.fileinputformat.split.maxsize
  • minPartitions参数(如果提供)
  • 块大小
  • 压缩(如果存在)(可拆分/不可拆分)。

您可以在此处找到示例计算:Behavior of the parameter "mapred.min.split.size" in HDFS