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) 

你可能感兴趣的:(spark生态体系了解学习(七))