Spark的Job、Stage、Task是按何种规则产生的

索引

Spark的Job、Stage、Task是按何种规则产生的

上面这张图就可以很清晰的说明这个问题。(图中最小的方块代表一个partition,包裹partition的方块是RDD,忽略颜色)

Job

Spark的Job来源于用户执行action操作,就是从RDD中获取结果的操作,而不是将一个RDD转换成另一个RDD的transformation操作。

Stage

Spark的Stage是分割RDD执行的各种transformation而来。如上图,将这些转化步骤分为了3个Stage,分别为Stage1,Stage2和Stage3。这里最重要的是搞清楚分割Stage的规则,其实只有一个:从宽依赖处分割。宽依赖概念请戳这里

知道了这个分割规则,其实还是有一点疑惑,为什么这么分?
其实道理蛮明显的,子RDD的partition会依赖父RDD中多个partition,这样就可能会有一些partition没有准备好,导致计算不能继续,所以就分开了,直到准备好了父RDD中所有partition,再继续进行将父RDD转换为子RDD的计算。而窄依赖完全不会有这个顾虑,窄依赖是父RDD一个partition对应子RDD一个partition,那么直接计算就可以了。

Task

一个Stage内,最终的RDD有多少个partition,就会产生多少个task。看一看上图就明白了。

原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/105

(1)
geekgaogeekgao博主
上一篇 2018年1月23日 下午6:26
下一篇 2018年1月31日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

GitHub
分享本页
返回顶部

Warning: error_log(/usr/local/lighthouse/softwares/wordpress/wp-content/plugins/spider-analyser/#log/log-1010.txt): failed to open stream: No such file or directory in /usr/local/lighthouse/softwares/wordpress/wp-content/plugins/spider-analyser/spider.class.php on line 2900