spark中的闭包与广播变量

本文深入探讨Spark的任务调度图,重点解析DAG的概念、宽依赖与窄依赖,以及Stage和Task的关系。接着,文章讨论了闭包在Spark中的作用,指出闭包捕获的外部自由变量在任务执行时可能导致资源浪费。最后,引入广播变量作为解决办法,它能有效减少内存占用,提高效率,是Spark中一种重要的优化技术。
摘要由CSDN通过智能技术生成

Spark 任务调度图(以Spark Core为例)

                          


1. DAG的应用

    Spark的Job(Application),从宏观上来看处理过程大致如下:

  • 加载数据,获取RDD(或DF等)
  • 转换数据
  • 执行转换,获取结果并处理

    整个计算过程是从上往下的(有方向),但是没有上下往复的处理(无循环),从图的角度我们可以将这个过程抽象为一个【DAG】(Directed Acyclic Graph)。

    数据处理过程中的各个步骤(如filter、map、reduce等)是连续的,每个步骤处理的输入数据集我们称为“父数据集”,本步骤处理后的输出数据集我们成为“子数据集”,这两个数据集我们称它们之间有依赖关系(父数据集经过加工得到子数据集)。如果父数据集中的数据分散到了N多(N>1)个子数据集中,我们称这种依赖关系为【宽依赖】,否则为【窄依赖】。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值