当密钥不在同一个地方时加入两个RDD

时间:2017-02-25 18:09:22

标签: python apache-spark pyspark rdd

我有两个看起来像这样的RDD: - RDD1元素看起来像这样[123,456,789],RDD2元素看起来像这样[456,999]。现在我需要基于456组合/连接这两个RDD,这是RDD1中的第二个元素和RDD2中的第一个元素。最终输出看起来像这样: - [123,456,789,999]。有没有办法可以做到这一点,或者密钥需要在加入的第一位? 提前感谢您的时间。

1 个答案:

答案 0 :(得分:0)

您可以将RDD转换为Dataframe,然后执行简单的连接,如下所示。

rdd1 = sc.parallelize([(123, 456, 789)])
rdd2 = sc.parallelize([(456, 999)])    
df1 = rdd1.toDF()
df2 = rdd2.toDF()
result = df1.join(df2, df1['_2'] == df2['_1'])
result.rdd.map(lambda x: (x[0],x[1],x[2],x[4])).collect()
[(123, 456, 789, 999)]