使用reduceByKey查找RDD的最大值,然后查找不同变量的关联值

时间:2016-07-20 11:31:25

标签: python apache-spark mapreduce pyspark rdd

我有一个带有3个值的RDD

rdd = rdd.map(lambda x: (x['Id'],[float(x['value1']),int(x['value2'])]))

我想查找并返回value1最大化的整个RDD 我知道我能做到

rddMax = rdd.map(lambda x: (x['Id'], int(x['value1']))).reduceByKey(max)

然后加入它但我只想要一个干净的操作,它找到按键分组的最大值2,然后返回与这些值相关的整个RDD。

我也不想在任何情况下将数据放在数据框中

感谢

1 个答案:

答案 0 :(得分:2)

试试这个:

>>> rdd =  rdd.map(lambda x: 
...  (x['key'], (float(x['value1']), int(x['value2']))))
>>> rdd.reduceByKey(
... lambda (v11, v21), (v12,v22): (v11, v21) if v11 > v12 else (v12, v22))