Spark快速大数据分析系列值第六章Spark编程进阶

本文深入探讨Spark的累加器和广播变量。累加器用于在执行器和驱动器间聚合信息,常用于调试;广播变量则能高效地向所有节点分发大变量,减少资源浪费。此外,还介绍了基于分区的操作优化,以及如何与外部程序交互和数值RDD的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

共享变量

  1. 累加器
  2. 广播变量

累加器

提供了将工作节点中的值聚合到驱动器程序中的简单语法

例子:计算空行数

val sc = new SparkContext(...)
val file = sc.textFile("file.txt")
val blankLines = sc.accumulator(0)                           // 创建Accumulator[Int]并初始化为0
val callSigns = file.flatMap(line => {
        if (line == "") {
                blankLines += 1 // 累加器加1
        }
        line.split(" ")
})
callSigns.saveAsTextFile("output.txt")
println("Blank lines: " + blankLines.value)
总结起来就是:

  • 通 过 在 驱动器中调用 SparkContext.accumulator(initialValue) 方法,创建出存有初始 值 的 累 加 器。 返 回 值 为 org.apache.spark.Accumulator[T] 对 象, 其 中 T 是 初 始 值initialValue 的类型。
  • Spark 闭包里的执行器代码可以使用累加器的 += 方法(在 Java 中是 add)增加累加器的值。
  • 驱动器程序可以调用累加器的 value 属性(在 Java 中使用 value() 或 setValue())来访问累加器的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值