我运行最简单的程序wordcount,代码如下:
val text = spark.read.textFile("/datasets/wordcount_512m.txt")
text.flatMap(line => line.split(" ")).groupByKey(identity).count().collect()
我的hdfs块大小是128mb,有两个执行器,每个执行器有两个内核。我查看了spark用户界面,在第0阶段,这很正常。
有四个任务并行运行。
但是在第一阶段发生了一件奇怪的事情,一些任务id没有按顺序执行。
如图所示,一些较大的任务id在小任务id之前运行(任务91在任务0之前运行)。这些异常任务ID代表什么?
1条答案
按热度按时间axzmvihb1#
作业中的spark阶段必须按顺序执行,否则在计算上就没有意义了。
在一个阶段中有任务-每个分区1个。这些任务按什么顺序执行并不重要,只要它们完成就行。这就是并行计算的概念-没有依赖关系。这些的时间安排并不相关。