如何将两个RDD合并到一个RDD

时间:2016-12-13 11:45:22

标签: scala apache-spark rdd

帮助,我有两个RDD,我想合并到一个RDD。这是我的代码。

val us1 = sc.parallelize(Array(("3L"), ("7L"),("5L"),("2L")))
val us2 = sc.parallelize(Array(("432L"), ("7123L"),("513L"),("1312L")))

2 个答案:

答案 0 :(得分:4)

只需使用union:

val merged = us1.union(us2)

文档为here

Scala中的Shotcut是:

val merged = us1 ++ us2

答案 1 :(得分:2)

您需要RDD.union这些不要加入密钥。 Union自己并没有真正做任何事情,因此开销很低。请注意,组合的RDD将包含原始RDD的所有分区,因此您可能希望在联合之后合并。

val x = sc.parallelize(Seq( (1, 3), (2, 4) ))
val y = sc.parallelize(Seq( (3, 5), (4, 7) ))
val z = x.union(y)
z.collect
res0: Array[(Int, Int)] = Array((1,3), (2,4), (3,5), (4,7))

API

def++(other: RDD[T]): RDD[T]

返回此RDD与另一个RDD的并集。

def++ API

def union(other: RDD[T]): RDD[T]

返回此RDD与另一个RDD的并集。任何相同的元素都会出现多次(使用.distinct()来消除它们)。

def union API