【问题标题】:How to union two rdds如何合并两个rdds
【发布时间】:2015-06-04 18:55:56
【问题描述】:

现在我有两个rdds,第一个是这样的

1,2

3,4

5,6

另外一个是这样的

7,8

9,10

11,12

现在我想像这样合并这两个 rdds

1,2,7,8

3,4,9,10

5,6,11,12

我该怎么做? rdd.union 无法得到这个结果

【问题讨论】:

  • 如果你解释一下rdd并在这里粘贴一些代码会更好。

标签: scala apache-spark bigdata rdd


【解决方案1】:

如果您可以保证两个 RDD 具有相同数量的元素和分区,则可以使用 rdd.zip 获得所需的结果,然后重新塑造结果对:

rdd1.zip(rdd2).map{case ((a1,a2),(b1,b2))=> (a1,a2,b1,b2)}

如果两个 RDD 的元素或分区数量不同,则需要一些键来连接它们。对它们进行索引不是很有效,但可以达到目的,尽管特定领域的解决方案(如果存在)会更好:

val indexed1 = rdd1.zipWithIndex.map(tuple => tuple.swap)
val indexed2 = rdd2.zipWithIndex.map(tuple => tuple.swap)

val joined = indexed1.join(indexed2)
val result = joined.map{case (k,((a1,a2),(b1,b2))) => (a1,a2,b1,b2)}

【讨论】:

    猜你喜欢
    • 2017-09-06
    • 2017-03-31
    • 2015-06-29
    • 1970-01-01
    • 2018-07-11
    • 2020-07-26
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多