Масштабирование конвертировать один ряд в несколько
Итак, у меня есть ошпаривающий канал, который содержит записи в форме (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])