滚烫将一排变成多排
Scalding convert one row into multiple
所以,我有一个烫管,其中包含以下形式的条目
(字符串,映射[字符串,整数])。我需要将此行的每个实例转换为多行。也就是说,如果我有
( "Type A", ["a1" -> 2, "a2" ->2, "a3" -> 3] )
我需要输出 3 行
("Type A", "a1", 2)
("Type A", "a2", 2)
("Type A", "a3", 3)
我猜它本质上是 groupBy 操作的逆操作。有谁知道这样做的方法吗?
您可以使用 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])
所以,我有一个烫管,其中包含以下形式的条目 (字符串,映射[字符串,整数])。我需要将此行的每个实例转换为多行。也就是说,如果我有
( "Type A", ["a1" -> 2, "a2" ->2, "a3" -> 3] )
我需要输出 3 行
("Type A", "a1", 2)
("Type A", "a2", 2)
("Type A", "a3", 3)
我猜它本质上是 groupBy 操作的逆操作。有谁知道这样做的方法吗?
您可以使用 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])