共享变量包含两个,广播和累加器。
累加器(accumulator)是spark中提供的一种分布式的变量机制,其原理类似于MapReduce,即分布式的改变,然后聚合这些改变。累加器的一个常见用途是在调试过程中对作业执行过程中的事件进行计数。而广播变量用来高效分发较大的对象。
共享变量出现的原因:
通常在向spark传递函数时,比如使用map()函数或者用filter()传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到变量的一份副本,更新副本的值不会影响到驱动器中的对应变量。
累加器和广播变量,分别为结果聚合与广播这两种常见的通信模式突破了这一限制。
网友评论