我有两个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)etc中的第一个字段和RDD2(3,1,2)etc中的第三个字段来连接上面的两个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列,最后一行连接这两列,并将结果以所需的格式显示。