我有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)等中的第3个字段加入上述2个RDD,并且只有当它的时候才能获得写入新输出RDD的匹配行两者都有。我知道有一个可以执行的连接操作。但不确定如何。
Required output
[['1','Name1'],
['2','Name2']]
如何处理?有没有办法在不使用数据帧的情况下执行此操作?
类似问题的答案并没有帮助我找到理想的解决方案。所以我不得不再次发布查询。
答案 0 :(得分:4)
您也可以加入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] ])
第1行选择rdd1中的键和名称。第2行选择rdd2的第3列,最后一行连接两者,并将结果放入所需的格式。