嗨我有以下格式的RDD(所有值都是字符串)
rdd1 = [(g1, p1, t1, e1, i1, v1),
(g1, p1, t1, e2, i2, v2),
(g1, p1, t1, e3, i3, v3),
(g1, p1, t1, e4, i4, v4),
(g2, p2, t2, e3, i3, v3),
(g2, p2, t2, e4, i4, v4)...]
我想转换它并获得以下格式
rdd2 = [(g1, p1, t1, "e1.i1.v1|e2.i2.v2|e3.i3.v3|e4.i4.v4"),
(g2, p2, t2, "e3.i3.v3|e4.i4.v4")...]
所以基于g,p和t值,我想解开RDD,我想让e.i.v值管道在同一行中分开。您可以将g,p和t视为生成元组的关键。
答案 0 :(得分:1)
它应该非常简单,就像这样:
rdd1
.map { case (g, p, t, e, i, v) => ((g, p, t), s"$e.$i.$v")}
.reduceByKey { _ + "|" + _ }
.map {case ((g, p, t), v) => (g, p, t, v)}