python - 在不使用数据帧的情况下匹配键并在 pyspark 中加入 2 个 RDD

标签 python apache-spark join pyspark rdd

我有 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/

相关文章:

apache-spark - Spark 忽略字符串中的逗号

mysql - 具有多个连接和求和函数的查询给出错误的总计或总和

apache-spark - 在writeStream到Elasticsearch之前,如何将JSON数组转换为行?

python - 用 pandas 读写 ID

python - 如何使 Python 列表在其切片被更改时可变

python - 如何使用 Django/Heroku 实现 301 重定向

apache-spark - 将 Spark 数据帧保存为 Hive 中的动态分区表

sql,使用内连接进行查询优化?

MySQL 连接右侧有前缀字符串的数据

python - turtle 多边形边界位置