我对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个分区。
如果有人能够更深入地了解实际发生的事情,那将会很棒。
答案 0 :(得分:1)
使用Hadoop格式加载文本文件。分区数取决于:
mapreduce.input.fileinputformat.split.minsize
mapreduce.input.fileinputformat.split.maxsize
minPartitions
参数(如果提供)您可以在此处找到示例计算:Behavior of the parameter "mapred.min.split.size" in HDFS