spark生态体系了解学习(七)

1、共享变量之累加器

通常在向 Spark 传递函数时,比如使用map()函数或者用filter()传条件时,可以使用驱 动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本, 更新这些副本的值也不会影响驱动器中的对应变量。

下面这段scala程序读取文件的同时统计了空白行的数量

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)
原文地址:https://www.cnblogs.com/zhangzhongkun/p/12271028.html