我有两个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)]
答案 0 :(得分:1)
你要求说你希望数字rdd1除以rdd2的值,它与rdd2的键匹配,第一个值是rdd1 key 。
如果我的理解是正确的,那么通过执行以下操作可以满足您的要求,其中rdd1被转换为将第一个值作为键,以便可以执行两个rdds之间的连接。
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)]