2016-11-09 64 views
1
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) 

结果斯卡拉 - 保持地图中的foreach

  1. A:1-
  2. 地图(A - > 1)
  3. B:2
  4. 地图(B - > 2) //删除密钥A
  5. C:3
  6. Map(C - > 3)//删除密钥A和B

总地图:地图()//没有

不知怎的,我不能存储的foreach地图数据。在添加新的密钥&值时,它会不断删除或初始化以前的数据。 任何想法?

回答

1

Spark关闭在一个单独的上下文中被序列化并执行(当在群集中时是远程的)。 myMap变量不会在本地更新。

您可以通过RDD数据作为地图,有一个内置的操作:

val myMap = rdd.collectAsMap() 
+0

数据具有一流的,有在它的许多领域。如何用特定的课程领域设置地图的关键和价值。 –

+0

解决!将原始rdd转换为新的rdd(键,值)类型并执行collectAsMap()。谢谢 :) –