Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用reduceByKey查找RDD的最大值,然后查找不同变量的关联值_Python_Apache Spark_Mapreduce_Pyspark_Rdd - Fatal编程技术网

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

Python 使用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 我也不

我有一个具有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['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))

这是一个经典的解决方案。我刚刚对原始问题进行了更改,所以它可以在没有第一句话的情况下工作,但感谢这是一个经典的解决方案。我刚刚对原始问题进行了更改,所以它可以在没有第一句话的情况下工作,但谢谢