Как слить карту <String, Int> с группой: Spark Scala

У меня есть фрейм данных 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)))
    }

scala,apache-spark,dataframe,group-by,rdd,

0

Ответов: 0

Как слить карту <String, Int> с группой: Spark Scala

У меня есть фрейм данных 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)))
    }
00Scala, апаш-искра, dataframe, группа мимо, РДД,
Похожие вопросы