RDD之collect方法执行的过程

首先来看一张图:
在这里插入图片描述
spark集群中有master节点和Worker节点,master节点负责任务调度,worker节点负责计算。

当集群启动时,worker节点会向master注册,并且定期向master发送心跳。

当我们向集群提交任务时,会启动一个进程spark-submit,这个进程也叫做driver。这个进程先要连接master,然后master会通过注册信息找到合适的worker节点去计算这个任务。这里所谓合适的worker节点,就是内存满足条件的,如果集群中没有内存满足条件的worker,那么这个任务就提交不上去了。

当找到合适的worker节点后,worker节点就会启动executor(进程),然后executor会通过master,worker节点知道driver的位置,然后和driver进行通信。

driver端会根据我们写的业务逻辑,切片,生成task,然后将这些task(是一个实例对象)分发给executor去执行,task中记录着计算逻辑,分区中记录着将来要从哪里读取数据。

executor要通过网络把数据读过去进行计算,(如果数据量很大,他会边读边计算),在executor中,task会将数据进行计算,计算的结果在worker上。

当执行collect时,driver端会将worker上的计算结果通过网络收集回去,放到Array中。(在存放到Array中的时候,会根据分区编号的顺序进行存放)

注意

在我们平时应用过程中,我们通常要把计算好的数据存放到HDFS,数据库中,如果我们都要先将数据汇总到driver端再存到数据库,那么当数据量很大的时候,driver端就会存放不下。所以我们应该直接把executor上计算好的数据保存进数据库。

在开发过程中,我们要尽可能使用foreach和foreachPartition方法,详细讲解请看博客:
https://blog.csdn.net/weixin_43866709/article/details/88667288

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值