Масштабирование конвертировать один ряд в несколько

Итак, у меня есть ошпаривающий канал, который содержит записи в форме (String, Map[String, Int]). Мне нужно преобразовать каждый экземпляр этой строки в несколько строк. То есть, если бы я

("Тип A", ["a1" -> 2, "a2" ->2, "a3" -> 3])

Мне нужно в качестве вывода 3 строки

("Тип А", "А1", 2)

("Тип А", "А2", 2)

("Тип А", "А3", 3)

Я полагаю, что это обратная операция groupBy. Кто-нибудь знает способ сделать это?

1 ответ

Решение

Ты можешь использовать flatmap, вот так:

class TestJob(args: Args) extends Job(args)
{
  val inputPipe: TypedPipe[Input]
  val out: TypedPipe[(String, String, Int)]= inputPipe.flatMap { rec => 
    rec.map.map{pair => (rec.kind, pair._1, pair._2)}
  }
}

case class Input(kind: String, map: Map[String, Int])
Другие вопросы по тегам