如何获得两个RDD的产品?

时间:2014-11-13 06:57:33

标签: scala apache-spark

新的火花。我有两个RDD,并希望在它们上生成结果RDD,如下所示。

val rdd1 =  Array(1, 2)
val rdd2 =  Array(a, b, c)

val resultRDD = [(1,a), (1,b), (1,c), (2,a), (2,b), (2,c)]

任何人都可以帮我解决我需要使用哪些转换或操作来生成 resultRDD ,如上所述。仅供参考,我是用scala写的。

修改

感谢。火花笛卡尔对我有用,如下所示。

    val data = Array('a', 'b')
    val rdd1 = sc.parallelize(data)

    val data2 = Array(1, 2, 3)
    val rdd2 = sc.parallelize(data2)

    rdd1.cartesian(rdd2).foreach(println)

2 个答案:

答案 0 :(得分:9)

def cartesian[U](other: RDD[U])(implicit arg0: ClassTag[U]): RDD[(T, U)]
  

返回此RDD的笛卡尔乘积和另一个,即所有元素对(a,b)的RDD,其中a在此处,b在其他元素中。

Doc here

答案 1 :(得分:1)

火花笛卡尔对我有用,如下所示。

    val data = Array('a', 'b')
    val rdd1 = sc.parallelize(data)

    val data2 = Array(1, 2, 3)
    val rdd2 = sc.parallelize(data2)

    rdd1.cartesian(rdd2).foreach(println)