val map1 = Map("key1" -> 1, "key2" -> 3, "key3" -> 5)
val map2 = Map("key2" -> 4, "key3" -> 6, "key5" -> 10)
val mapAdd1 = map1 ++ map2.map(t => t._1 -> (t._2 + map1.getOrElse(t._1, 0)))
println(mapAdd1)
val res = rdd.reduceByKey((x,y) => {
val map1 : Map[Long,String] = x
val map2 : Map[Long,String] = y
//以下常见写法,会遍历一次整个 all ?
var all:Map[Long,String] = map2 ++ map1.map(t => {
var names = map2.get(t._1) match { //模式匹配选择,map 的 get 方法返回的是 Option 类型
case None => t._2 //当没又这个 key 的时候会返回 None 类型
case Some(s) => t._2 + "," + s //有只的时候会返回 Some 类型
}
t._1 -> names
})
all
})
val res = rdd.reduceByKey((x,y) => {
val map1 : Map[Long,String] = x
val map2 : Map[Long,String] = y
//把数据量少的 map 放前面,追加的 map 放后面,下面叠加的时候就能少操作一些
var all:Map[Long,String] = map2 ++ map1 //因为 ++ 符号右覆盖左
//循环新加入的 map(ps:这里实际只有一个)
map2.keys.foreach(k =>{
var names = map1.get(k) match { //模式匹配选择,map 的 get 方法返回的是 Option 类型
case None => map2(k) //当没又这个 key 的时候会返回 None 类型
case Some(s) => map2(k) + "," + s //有只的时候会返回 Some 类型
}
all += (k -> names)
})
all
})
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.