Python 3.x 从两个不同的rdd创建新的rdd

Python 3.x 从两个不同的rdd创建新的rdd,python-3.x,apache-spark,pyspark,Python 3.x,Apache Spark,Pyspark,我有两个rdd,如下所示: rdd1=sc.parallelize([(('a','b'),10),(('c','d'),20)]) rdd2=sc.parallelize([('a',2),('b',3),('c',4)]) 我需要按如下方式创建一个新的rdd:('a','b')=>value(a,b)/value(a)=>10/2 [(('a','b'),5.0),(('c','d'),5.0)]您的要求是,您希望数字rdd1由rdd2中的值分隔,该值与rdd2的键和rdd1键的第一个值相

我有两个rdd,如下所示:

rdd1=sc.parallelize([(('a','b'),10),(('c','d'),20)])
rdd2=sc.parallelize([('a',2),('b',3),('c',4)])
我需要按如下方式创建一个新的rdd:
('a','b')=>value(a,b)/value(a)=>10/2

[(('a','b'),5.0),(('c','d'),5.0)]

您的要求是,您希望数字rdd1由rdd2中的值分隔,该值与rdd2的键和rdd1键的第一个值相匹配

如果我的理解是正确的,那么可以通过执行以下操作来满足您的需求,其中rdd1被转换为将第一个值作为键,以便可以执行两个RDD之间的连接

rdd1.map(lambda x: (x[0][0], x)).join(rdd2).map(lambda x: (x[1][0][0], float(x[1][0][1]/x[1][1])))
#[(('a', 'b'), 5.0), (('c', 'd'), 5.0)]