【问题标题】:Find max value of RDD with reduceByKey and then find associate value of a different variable使用 reduceByKey 找到 RDD 的最大值,然后找到不同变量的关联值
【发布时间】:2016-07-20 11:31:24
【问题描述】:

我有一个包含 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。

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

谢谢

【问题讨论】:

    标签: python apache-spark mapreduce pyspark rdd


    【解决方案1】:

    试试这个:

    >>> 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))
    

    【讨论】:

    • 这是一个经典的解决方案。
    • 我刚刚对原始问题进行了更改,因此无需先声明即可使用,但谢谢
    猜你喜欢
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 2023-04-05
    相关资源
    最近更新 更多