spark如何确定任务数量?
Posted
技术标签:
【中文标题】spark如何确定任务数量?【英文标题】:How does spark determine the number of tasks? 【发布时间】:2016-11-18 14:33:03 【问题描述】:在读取大量文本文件时,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 个分区。
如果有人能给我更多关于实际发生的事情的见解,那就太好了。
【问题讨论】:
您用于这项工作的内核总数是多少?你有没有设置任何配置? 为了便于理解。你能发布你的代码和你的 Spark ui 详细信息吗? @SimonSchiff 我使用了 8 个内核,但我没有任何配置我知道。不过,这似乎是正确的方向。我尝试在更大的机器上执行代码,它有预期的 26 个任务。 【参考方案1】:文本文件使用 Hadoop 格式加载。分区数取决于:
mapreduce.input.fileinputformat.split.minsize
mapreduce.input.fileinputformat.split.maxsize
minPartitions
参数(如果提供)
块大小
压缩(如果存在)(可拆分/不可拆分)。
您可以在此处找到示例计算:Behavior of the parameter "mapred.min.split.size" in HDFS
【讨论】:
以上是关于spark如何确定任务数量?的主要内容,如果未能解决你的问题,请参考以下文章