I don't know the exact implementation of accumulator. You can look at the sources. But for Scala look at the following REPL session.
scala> val al = new ArrayList[String]() al: java.util.ArrayList[String] = [] scala> al.add("a") res1: Boolean = true scala> al res2: java.util.ArrayList[String] = [a] scala> al.add("b") res3: Boolean = true *scala> al = new ArrayList[String]()* *<console>:10: error: reassignment to val* * al = new ArrayList[String]()* * ^* scala> var ar = new ArrayList[String]() ar: java.util.ArrayList[String] = [] scala> ar.add("a") res4: Boolean = true scala> ar.add("b") res5: Boolean = true scala> ar res6: java.util.ArrayList[String] = [a, b] scala> ar = new ArrayList[String]() ar: java.util.ArrayList[String] = [] scala> ar res7: java.util.ArrayList[String] = [] scala> al res8: java.util.ArrayList[String] = [a, b] On Mon, Sep 22, 2014 at 2:30 PM, Vikram Kalabi <vikram.apache....@gmail.com> wrote: > Consider this snippet from spark scaladoc > <https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.Accumulator> > , > > scala> val accum = sc.accumulator(0) > accum: spark.Accumulator[Int] = 0 > > scala> sc.parallelize(Array(1, 2, 3, 4)).foreach(x => accum += x) > ...10/09/29 18:41:08 INFO SparkContext: Tasks finished in 0.317106 s > > scala> accum.value > res2: Int = 10 > > > How accum value is allowed to change? "accum" is defined as val, which is > immutable; but after next step accum value has changed to 10. > > I am newbie to spark and scala so please clarify this. > > Thanks in advance. > > Vikram >