spark什么计算运行在excutor,什么算子运行在driver?

什么计算运行在excutor,什么算子运行在driver?


(1)、foreachRdd运行在driver节点,因为它是操作dstream的。foreachPartition和foreach运行在worker节点,因为它是操作rdd的。foreachRdd开启对任务的启动,当执行到执行算子的时候开始任务的执行。
(2)、对rdd进行操作的就运行在worker节点,对dstream进行操作的就运行在driver节点。

(3)、以下代码将rdd转成了set,所以在driver端执行。

resultPlayListRdd.map{ _._1 }.collect.toSet

从执行的过程可分为三个部分来分析main方法,RDD处理方法,DStream处理方法,从执行的JVM虚拟机可以分为两个部分driver端,worker端。

一、main方法

main方法就是在driver端执行的,当然这里是把RDD计算的Action剔除的情况,先看一段代码

  除了rdd算子中的代码其他都是在driver端执行,并且只执行一次

二、DStream处理方法

在sparkStreaming中spark引入了DStream,在处理的时候代码是:

        DStream的action方法中的代码只有在处理rdd时才会在Worker端执行,其他对dstream进行操作的就运行在driver节点,这里是计算一次执行一次。除了Dstram计算中的代码其他都是在driver端并且只执行一次。

三、RDD处理方法

与rdd算子无关的代码都是在driver端计算一次执行一次。rdd的算子闭包是在worker端中执行的。

发布了159 篇原创文章 · 获赞 75 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/xuehuagongzi000/article/details/102903264
今日推荐