【问题标题】:How to unflatten RDD based on few columns如何根据几列展开 RDD
【发布时间】:2017-03-10 01:41:13
【问题描述】:

您好,我有以下格式的 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 作为结果元组的键。

【问题讨论】:

    标签: scala apache-spark rdd


    【解决方案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)}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-28
      • 2021-04-10
      • 2022-10-15
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多