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
>

Reply via email to