Spark累加器和广播变量。
累加器:
通过初始化SparkContext.accumulator(T)来获取一个累加器。
在各个工作节点对累加器的更新会影响其他节点累加器的值。 在foreach操作中进行累加器操作可以避免同一任务因为重启而重复更新累加器。
但是累加器在RDD转化中无法避免意外的重复更新。
广播变量:
通过初始化SparkContext.broadcast()来获取一个broadcast[T]的广播变量。通过value方法获取广播变量的值。
广播变量只会向各个工作节点发送一次,因此在需要向各个工作节点发送大的只读量时,比较高效。 记住,广播变量只能广播只读值,因为在工作节点对广播变量的进行修改,不会影响到其他工作节点的值。