var myMap:Map[String, Int] = Map()
myRDD.foreach { data =>
println( "1. " + data.name + " : " + data.time)
myMap += ( data.name -> data.time)
println( "2. " + myMap)
}
println( "Total Map : " + myMap)
结果
- A:1
- 地图(A - > 1)
- B:2
- 地图(B - > 2)//已删除密钥A
- C:3
- 地图(C - > 3)//删除了密钥A和B
醇>总地图:地图()//没有
不知何故,我无法将地图数据存储在foreach中。它在添加新密钥和值时不断删除或初始化先前的数据。 有什么想法吗?
答案 0 :(得分:1)
Spark闭包被序列化并在单独的上下文中执行(在群集中时远程执行)。 myMap
变量不会在本地更新。
要将RDD中的数据作为地图获取,可以进行内置操作:
val myMap = rdd.collectAsMap()