spark的广播变量和累加器的用法

本文详细介绍了Spark的广播变量和累加器的使用,包括它们的作用、使用场景及注意事项。广播变量用于在各节点间高效共享只读数据,而累加器则支持并行计算过程中的数值累加。文章还给出了广播变量和累加器的代码示例,强调了广播变量的只读特性以及累加器的读取与更新规则。此外,文章指出在Spark Streaming中累加器无法从检查点恢复,并讨论了广播变量只读的原因——数据一致性挑战。
摘要由CSDN通过智能技术生成

今天我们主要来说一下spark的广播变量和累加器的具体使用,先来看一下官网的介绍:

共享变量

通常,当在远程集群节点上执行传递给Spark操作(例如map,reduce)的函数时,它将在函数中使用的所有变量的单独副本上工作.这些变量将复制到每台计算机,并且远程计算机上的变量更新不会传播回驱动程序.支持跨任务的通用,读写共享变量效率低下.但是,Spark确实为两种常见的使用模式提供了两种有限类型的共享变量:广播变量和累加器.

广播变量

广播变量允许程序员在每台机器上保留一个只读变量,而不是随副本一起发送它的副本.例如,它们可用于以有效的方式为每个节点提供大输入数据集的副本.Spark还尝试使用有效的广播算法来分发广播变量,以降低通信成本.

Spark动作通过一组阶段执行,由分布式“shuffle”操作分隔.Spark自动广播每个阶段中任务所需的公共数据.以这种方式广播的数据以序列化形式缓存并在运行每个任务之前反序列化.这意味着显式创建广播变量仅在跨多个阶段的任务需要相同数据或以反序列化形式缓存数据很重要时才有用.

广播变量是v通过调用从变量创建的SparkContext.broadcast(v).广播变量是一个包装器v,可以通过调用该value方法来访问它的值.

累加器

累加器是仅通过关联和交换操作“添加”的变量,因此可以并行地有效支持。它们可用于实现计数器(如MapReduce)或总和。Spark本身支

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JasonLee实时计算

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值