2016-11-09 63 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()。謝謝 :) –