Python 使用reduceByKey查找RDD的最大值,然后查找不同变量的关联值
我有一个具有3个值的RDDPython 使用reduceByKey查找RDD的最大值,然后查找不同变量的关联值,python,apache-spark,mapreduce,pyspark,rdd,Python,Apache Spark,Mapreduce,Pyspark,Rdd,我有一个具有3个值的RDD rdd = rdd.map(lambda x: (x['Id'],[float(x['value1']),int(x['value2'])])) 我想找到并返回整个RDD,其中value1最大 我知道我能做到 rddMax = rdd.map(lambda x: (x['Id'], int(x['value1']))).reduceByKey(max) 然后将其连接回去,但我只需要一个干净的操作,它会找到按键分组的最大值2,然后返回与这些值关联的整个RDD 我也不
rdd = rdd.map(lambda x: (x['Id'],[float(x['value1']),int(x['value2'])]))
我想找到并返回整个RDD,其中value1最大
我知道我能做到
rddMax = rdd.map(lambda x: (x['Id'], int(x['value1']))).reduceByKey(max)
然后将其连接回去,但我只需要一个干净的操作,它会找到按键分组的最大值2,然后返回与这些值关联的整个RDD
我也不想在任何情况下将数据放入数据帧中
谢谢试试这个:
>>> 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))
试试这个:
>>> 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))
这是一个经典的解决方案。我刚刚对原始问题进行了更改,所以它可以在没有第一句话的情况下工作,但感谢这是一个经典的解决方案。我刚刚对原始问题进行了更改,所以它可以在没有第一句话的情况下工作,但谢谢