因为spark的map的操作是闭包的,所以想对外部变量操作像java一样设置一个外部flag是行不通的,因此可以采用累加器来实现
val sd = spark.sparkContext.longAccumulator
val res = df.map{
item =>{
val arr: Array[String] = item.split(",")
for( x <- 0 until arr.length){
sd.add(1l)
print(arr(x)+sd.value)
}
}
}
但是注意累加器最好放在action的函数中使用