pyspark groupBy方法中用到的知识点
智能搜索引擎 实战中用到的pyspark知识点总结
项目中,先配置了spark,通过spark对象连接到hive数据库,在 hive数据库中以dataframe的形式获取数据,使用pyspark的dataframe的相关方法操作数据,最后将整理好的数据写入hive表存入数据库,该篇介绍项目中使用到的groupBy,agg的相关方法。
sum和udf方法计算平均得分
数据介绍:主播表,一个主播有很多直播课,每个直播课都有一个总评分和评分人数,现要计算出该主播的平均得分。
思路:单个主播的所有的直播课的分数全部加起来,除以所有直播课的共同的评分人数。
from pyspark.sql.types import DoubleType
from pyspark.sql.functions import udf
def Spark():
"""
spark配置类
"""
sp = Spark()
spark = sp.spark
df = spark.sql("select anchor_id,live_score,live_comment_count from table_anchor")
df = df.groupBy('anchor_id')
.agg({
"live_score": "sum", "live_comment_count": "sum"})
.withColumnRenamed("sum(live_score)", "total_score")
.withColumnRenamed("sum(live_comment_count)", "total_people")
现在就获得了两列 总分数和总人数
使用udf方法自定义函数即可求的平均分
def avg_score(score,people):
try:
if