4

在读取大量文本文件时,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()

每个文件夹包含 24 个文件,因此从读取a, b, c完整文件夹后总共有 26 个文件。b现在,如果我执行一个动作,比如.count(),Spark UI 会显示有 24 个任务。但是,我会认为有 26 个任务,例如每个分区 1 个任务和每个文件 1 个分区。

如果有人能给我更多关于实际发生的事情的见解,那就太好了。

4

1 回答 1

2

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

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

您将在此处找到示例计算:HDFS 中参数“mapred.min.split.size”的行为

于 2016-11-18T14:56:24.587 回答