spark 分组聚合groupBy()方法实践应用
1、groupBy()分组方法,后面跟agg()聚合方法,按照需要的聚合函数对数据进行分组聚合统计#in pythonfrom pyspark.sql.functions import count,min,max,avg,var_pop,stddev_popdf.select("code", "sku", "gmv").distinct()\.groupBy("code")\.agg(count(
·
1、groupBy()分组方法,后面跟agg()聚合方法,按照需要的聚合函数对数据进行分组聚合统计
#in python
from pyspark.sql.functions import count,min,max,avg,var_pop,stddev_pop
df.select("code", "sku", "gmv").distinct()\
.groupBy("code")\
.agg(
count("sku").alias("sku_cnt"),
min("gmv").alias("min_gmv"),
max("gmv").alias("max_gmv"),
avg("gmv").alias("avg_gmv"),
stddev_pop("gmv").alias("std_gmv"),
var_pop("gmv").alias("var_gmv")
)\
.sort("code")\
.show(200)
输出结果:
2、对全局使用聚合函数,不用分组
#in python
from pyspark.sql.functions import min,max,avg,var_pop,stddev_pop, count,countDistinct
df_users.select(
count("sku").alias("sku_cnt"),
countDistinct("sku").alias("sku_cnt_distinct"),
min("gmv").alias("min_gmv"),
max("gmv").alias("max_gmv"),
avg("gmv").alias("avg_gmv"),
stddev_pop("gmv").alias("std_gmv"),
var_pop("gmv").alias("var_gmv")).show()
输出结果:【注意:去重统计countDistinct() 和不去重统计count()的结果的区别 】
3、正确区分语法命令输出的结果是int类型,还是DataFrame类型
3.1 返回结果是int类型
#in python
result0 = df_users.select("user_id").distinct().count()
print("result0:count is {}".format(result0))
#注意这里的 result0是int整数类型,不是DataFrame,所以不能.show()
3.2返回结果是DataFrame
#in python
from pyspark.sql.functions import countDistinct
df.select(countDistinct("user_id").alias("user_cnt")).show()
#这里是DataFrame不是int,所以可以.show()

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)