spark累加器

博客内容介绍了Spark中的累加器,包括其作为分布式只写变量的角色和如何在任务中更新副本。文章通过系统累加器和自定义累加器的案例,详细解释了累加器的工作原理和使用方法,如LongAccumulator继承自AccumulatorV2,并展示了如何自定义累加器以满足特定需求。
摘要由CSDN通过智能技术生成

spark中有三大数据结构,它们分别是RDD(弹性分布式数据集)、累加器(分布式只写变量)和广播变量(分布式只读变量)。spark累加器就是定义在驱动程序的一个变量,但是在集群中的每一个任务都会有一份新的副本。在各个任务中更新副本的值都不会对驱动程序中的值产生影响,只有到最后所有的任务都计算完成后才会合并每一个任务的副本到驱动程序。累加器的提示如下:
在这里插入图片描述
spark有系统累加器,同时也支持自定义累加器,下面来通过案例来介绍这两种累加器:

  • 系统累加器
    现在又如下需求:通过两个分区计算出List(1,2,3,4,5,6,7,8)的每个元素之和,虽然不用累加器也能完成,但是我们要熟悉累加器,所以下面使用累加器来编写程序:
    使用累加器的基本流程就是先创建累加器,然后就可以使用了。
object AccumulatorTest {
   
    def main(args: Array[String]): Unit = {
   
        val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("AccumulatorTest")
        val sc = new SparkContext(conf)
        val dataRDD: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4, 5, 6,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值