如何将Map <string,int =“”>与group合并:Spark Scala

时间:2016-10-16 21:08:51

标签: scala apache-spark dataframe group-by rdd

我有一个数据框df:[id, value : map<string, int>]

id :1
value : ("item1" -> 2)

id :1
value : ("item2" -> 3)

如何基于id合并地图,以便我可以

id : 1
value : { "item1" : 2, "item2" : 3}

我可以使用任何实用功能,或者有人能告诉我更好的方法吗?

我尝试使用reduceByKey

case class Data (itemMap : Map[String, Int]) extends Serializable

 df.map{
    case r =>
    val id = r.getAs[String]("id")
    val Value = r.getAs[Map[String, Int]]("value")

    (id, Value)

}.reduceByKey((x, y) => x ++ y).map{
      case (k, v) =>
        (k, JacksonUtil.toJson(Data(v)))
    }

0 个答案:

没有答案