スパークコアRDD変換演算子 - 対話型値ダブル

1、労働組合(otherDataSet)

効果求并集。RDDとソースパラメータとRDDを設定要件は、新しいRDDを返します。

scala> val rdd1 = sc.parallelize(1 to 6)
scala> val rdd2 = sc.parallelize(4 to 10)
scala> val rdd3 =  rdd1.union(rdd2)

scala> rdd3.collect
res1: Array[Int] = Array(1, 2, 3, 4, 5, 6, 4, 5, 6, 7, 8, 9, 10)

union和++是等价的

図2に示すように、減算(otherDataSet)

役割: 差集.元にRDDからRDD元の共通部分を差し引くとotherDataset。

scala> rdd1.subtract(rdd2).collect
res4: Array[Int] = Array(1, 2, 3)

scala> rdd2.subtract(rdd1).collect
res5: Array[Int] = Array(7,8,9,10)

図3に示すように、交差点(otherDataSet)

役割交集ソースパラメータRDD RDDのためにとの交差点の後に新しいRDDを返します

scala> rdd1.intersection(rdd2).collect
res8: Array[Int] = Array(4, 6, 5)

4、デカルト(otherDataSet)

アクション:RDD 2が計算される笛卡尔积. の使用を避けるために、

scala> rdd1.cartesian(rdd2).collect
res11: Array[(Int, Int)] = Array((1,4), (1,5), (1,6), (2,4), (2,5), (2,6), (3,4), (3,5), (3,6), (1,7), (1,8), (1,9), (1,10), (2,7), (2,8), (2,9), (2,10), (3,7), (3,8), (3,9), (3,10), (4,4), (4,5), (4,6), (5,4), (5,5), (5,6), (6,4), (6,5), (6,6), (4,7), (4,8), (4,9), (4,10), (5,7), (5,8), (5,9), (5,10), (6,7), (6,8), (6,9), (6,10))

5、ZIP(otherDataSet)

役割拉链操作は,.ことに留意すべきであるスパークでは两个 RDD 的元素的数量和分区数都必须相同(。、それ以外の場合は、例外がスローされます在 scala 中, 两个集合的长度可以不同

実際には、各パーティションの同じ数の要素は、本質的に必要とされます。
scala> val rdd1 = sc.parallelize(1 to 5)
scala> val rdd2 = sc.parallelize(11 to 15)

scala> rdd1.zip(rdd2).collect
res1: Array[(Int, Int)] = Array((1,11), (2,12), (3,13), (4,14), (5,15))

おすすめ

転載: www.cnblogs.com/hyunbar/p/12045598.html