【问题标题】:Get sum and length of rdd column using groupBy?使用 groupBy 获取 rdd 列的总和和长度?
【发布时间】:2021-07-06 15:38:31
【问题描述】:

我有以下 RDD:

[(1, 300), (4, 60), (4, 20), (2, 2), (2, 3), (2, 5)]

我预期的 RDD 是:

[(1,[300, 1]), (2,[10, 3]), (4,[80,2])]

元组中列表中的第一个值是总和(例如,对于 2:它的 2+3+5 = 10),第二个值是第一个值。发生次数(例如 1 发生一次)。使用 groupBy 函数可以达到预期的 RDD 吗?

【问题讨论】:

    标签: python apache-spark pyspark rdd


    【解决方案1】:

    您可以将每个值映射到列表[x, 1],然后对每个键的所有列表求和。

    rdd = sc.parallelize([(1, 300), (4, 60), (4, 20), (2, 2), (2, 3), (2, 5)])
    
    result = rdd.mapValues(lambda x: [x, 1]).reduceByKey(lambda x, y: [x[0] + y[0], x[1] + y[1]])
    
    result.collect()
    # [(1, [300, 1]), (2, [10, 3]), (4, [80, 2])]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多