我有 2 个 RDD。
RDD 1:
[['1', 'user1', 'Name1'],
['2', 'user4', 'Name2']]
RDD 2:
[['5', '1a', '3', '99', 'g1'],
['11', '2b', '1', '99', 'g2'],
['12', '3c', '2', '99', 'g3']]
我必须使用 RDD 1 (1,2) 等中的第一个字段与 RDD2 (3,1,2) 等中的第三个字段连接上面的 2 个 RDD,并且仅当其匹配行写入新输出 RDD 时两者都可用。我知道有一个可以执行的连接操作。但不确定如何。
Required output
[['1','Name1'],
['2','Name2']]
如何进行?有没有办法在不使用数据帧的情况下做到这一点?
类似问题的答案并没有帮助我找到理想的解决方案。所以我不得不再次发布查询。
最佳答案
您还可以加入 RDD。此代码将为您提供您想要的。
tuple_rdd1 = rdd1.map(lambda x: (x(0), x(2)))
tuple_rdd2 = rdd1.map(lambda x: (x(2), 0)) )
result = tuple_rdd1.join(tuple_rdd2).map(lambda x: [x[0], x[1][0] ])
第一行选择 rdd1 中的键和名称。第 2 行选择 rdd2 的第 3 列,最后一行连接两者并将结果放入所需格式。
关于python - 在不使用数据帧的情况下匹配键并在 pyspark 中加入 2 个 RDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47978962/