python 平均值 最大值 最小值_pyspark计算最大值、最小值、平均值

需求:使用pyspark计算相同key的最大值、最小值、平均值

说明: 最大值和最小值好计算,直接reduceByKey后使用python内置的max、min方法

平均值计算提供两种计算方法,直接先上代码和运行结果,后面有代码记录

3c30262aaf94bb26f0788c039cc1b94e.png

def main():

sc = SparkContext(conf=SparkConf())

rdd1 = sc.parallelize([("a", 3), ("a", 2), ("b", 5), ("b", 3), ("c", 8), ("c", 1)]).cache()

# 最大值

rdd2 = rdd1.reduceByKey(max)

# 最小值

rdd3 = rdd1.reduceByKey(min)

# 平均值方法1

rdd4 = rdd1.groupByKey().mapValues(list).map(lambda x: (x[0], sum(x[1])/len(x[1])))

# 平均值方法2

rdd5 = rdd1.combineByKey(lambda x: (x, 1),

lambda x, y: (x[0]+y, x[1]+1),

lambda x, y: (x[0]+y[0], x[1]+y[1])).map(lambda x: (x[0], x[1][0]/x[1][1]))

print(rdd2.collect())

print(rdd3.collect())

print(rdd4.collect())

print(rdd5.collect())

if __name__ == '__main__':

main()

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值