【发布时间】:2018-12-04 01:51:01
【问题描述】:
我创建了 2 个RDD's,如下所示:
rdd1 = sc.parallelize([(u'176', u'244', -0.03925566875021147), (u'28', u'244', 0.9175106515709205), (u'165', u'244', -0.3837580218245722), (u'181', u'244', 0.29145693160561503), (u'161', u'244', -0.503468718448459), (u'28', u'275', 1.1636548589189926), (u'165', u'275', -1.026158464467282), (u'181', u'275', 0.6685791983070568)])
rdd2 = sc.parallelize([(u'176', u'244'), (u'28', u'244'), (u'165', u'244'), (u'165', u'275'), (u'181', u'275'), (u'141', u'388'), (u'154', u'238')])
我的预期输出应该如下所示:
[(u'176', u'244', -0.03925566875021147,1), (u'28', u'244', 0.9175106515709205,1), (u'165', u'244', -0.3837580218245722,1), (u'181', u'244', 0.29145693160561503,0), (u'161', u'244', -0.503468718448459,0), (u'28', u'275', 1.1636548589189926,0), (u'165', u'275', -1.026158464467282,1), (u'181', u'275', 0.6685791983070568,1)]
我想加入两个 rdds 添加加入状态,如 1 或 0。
在 rdd1 第一个元组是 (u'176', u'244', -0.03925566875021147) 并且 rdd2 包含
(u'176', u'244'),rdd1,rdd2 的前两个元素相同,那么我的预期输出是 (u'176', u'244', -0.03925566875021147,1)。
在 Rdd1 的情况下相同:(u'181', u'275', 0.6685791983070568) 和 Rdd2 :(u'181', u'275') 输出将是 (u'181', u'275', 0.6685791983070568,1)。
其他情况:
rdd1 包含 (u'181', u'244', 0.29145693160561503) 但 rdd2 不包含任何像 (u'181', u'244') 这样的元组,所以预期的输出将是 (u'181', u'244', 0.29145693160561503,0)
我通过创建数据框实现了这一点,但我不想使用数据框连接。请帮助解决如何使用 rdds 来实现。
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql pyspark-sql