Java version
Package cn.spark.study.core;
Import Org.apache.spark.Accumulator;
Import org.apache.spark.SparkConf;
Import Org.apache.spark.api.java.JavaRDD;
Import Org.apache.spark.api.java.JavaSparkContext;
Import org.apache.spark.api.java.function.VoidFunction;
Import java.util.*;
public class Accumulatorvairable {public
static void Main (string[] args) {
sparkconf conf =new sparkconf (). Setap PName ("persist"). Setmaster ("local");
Javasparkcontext SC =new javasparkcontext (conf);
Final accumulator<integer> accumulator = sc.accumulator (0);
List<integer> numberlist =arrays.aslist (1,2,3,4,5);
javardd<integer> num =sc.parallelize (numberlist);
Num.foreach (New voidfunction<integer> () {
@Override public
void Call (Integer arg0) throws Exception { C16/>accumulator.add (arg0);
}
);
System.out.println (Accumulator.value ());
Sc.close ();
}
Python version
Import OS
import sys
os.environ[' spark_home ' = '/opt/spark '
sys.path.append ("/opt/spark/python")
From Pyspark import sparkcontext from
pyspark import sparkconf
if __name__ = ' __main__ ':
sc = Sparkcontext (" Local ", reduce")
sumact = sc.accumulator (0)
list = [1, 2, 3, 4, 5]
Listrdd = sc.parallelize (list)
def f ( num):
global sumact
sumact +=num
Listrdd.foreach (f)
print Sumact