在Driver程序中定义的变量,在Executor端的每个task都会得到这个变量的一份新的副本,每个task更新这些副本的值后,传回Driver端进行merge。...答案为0sum=0为什么是0呢?难道不应该是3+2+5+4+8+6=28吗? 原因很简单,foreach 属于Action算子;算子都是是Executor中执行的,算子外的都在是Driver中执行的。...在Spark中如果想在Task计算的时候统计某些事件的数量,使用filter/reduce也可以,但是使用累加器是一种更方便的方式,累加器一个比较经典的应用场景是用来在Spark Streaming应用中记录某些事件的数量...1),("java",1),("spark",1))这样IN 的参数类型就明确了,首先是一个元组,元组类型为(String,Int) 那么OUT的类型呢?...List(("python",2),("java",2),("spark",1))OUT的类型,我们可以指定成一个List ,里面的元素类型,还是一个元组(String,Int)还需要重写里面的方法。