Scala-在foreach中保留映射

Scala-在foreach中保留映射,scala,dictionary,Scala,Dictionary,结果 A:1 地图(A->1) B:2 映射(B->2)//已删除键A C:3 映射(C->3)//删除了键A和键B 总映射:Map()//无 不知何故,我无法在foreach中存储地图数据。在添加新的键和值时,它不断删除或初始化以前的数据。 对此有何想法?Spark闭包被序列化并在单独的上下文中执行(在集群中时远程执行)myMap变量不会在本地更新 要从RDD获取数据作为映射,有一个内置操作: var myMap:Map[String, Int] = Map() myRDD.f

结果

  • A:1
  • 地图(A->1)
  • B:2
  • 映射(B->2)//已删除键A
  • C:3
  • 映射(C->3)//删除了键A和键B
  • 总映射:Map()//无

    不知何故,我无法在foreach中存储地图数据。在添加新的键和值时,它不断删除或初始化以前的数据。
    对此有何想法?

    Spark闭包被序列化并在单独的上下文中执行(在集群中时远程执行)<代码>myMap变量不会在本地更新

    要从RDD获取数据作为映射,有一个内置操作:

        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)
    

    数据有类,其中有许多字段。如何使用类的特定字段设置映射的键和值。已解决!将原始rdd转换为新的rdd(键、值)类型并执行collectAsMap()。谢谢:)
    val myMap = rdd.collectAsMap()