[博学谷学习记录] 超强总结,用心分享|Pyspark_SQL3

2024-03-26 02:30

本文主要是介绍[博学谷学习记录] 超强总结,用心分享|Pyspark_SQL3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Pyspark

注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
今天继续和大家分享一下Pyspark_SQL3
#博学谷IT学习技术支持


文章目录

  • Pyspark
  • 前言
  • 一、 电影分析案例
  • 总结


前言

今天继续分享Pyspark_SQL3。

一、 电影分析案例

在这里插入图片描述

  • 需求1:查询用户平均分
  • 需求2:查询电影平均分
  • 需求3:查询大于平均分的电影数量
  • 需求4:查询高分电影中(>3)打分次数最多的用户,并求出此人打的平均分
  • 需求5:查询每个用户的平均打分,最低打分,最高打分
  • 需求6:查询被评分超过100次的电影的平均分排名前10
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
from pyspark.sql.types import *
import pyspark.sql.functions as Fdef method01():# 需求1:查询用户平均分df.select("userid", "score").groupBy("userid").agg(F.round(F.avg("score"), 2).alias("u_s_avg")).orderBy("u_s_avg", ascending=False).show()def method02():# 需求2:查询电影平均分df.select("movieid", "score").groupBy("movieid").agg(F.round(F.avg("score"), 2).alias("m_s_avg")).orderBy("m_s_avg", ascending=False).show()def method03():# 需求3:查询大于平均分的电影数量df_avg_score = df.select("score").agg(F.avg("score").alias("avg_score"))df_movie_avg_score = df.select("movieid", "score").groupBy("movieid").agg(F.avg("score").alias("movie_avg_score"))print(df_movie_avg_score.where(df_movie_avg_score["movie_avg_score"] > df_avg_score.first()["avg_score"]).count())def method04():# 需求4:查询高分电影中(>3)打分次数最多的用户,并求出此人打的平均分# 4.1高分电影df_hight_score_movie = df.groupBy("movieid").agg(F.avg("score").alias("m_s_avg")).where("m_s_avg>3").select("movieid")# 4.2高分电影中打分次数最多的用户df_hight_count_user = df_hight_score_movie.join(df, "movieid", "inner").groupBy("userid").agg(F.count("movieid").alias("u_m_count")).orderBy("u_m_count", ascending=False).limit(1)# 4.3此用户的平均分df.where(df["userid"] == df_hight_count_user.first()["userid"]) \.select("userid", "score").groupBy("userid").agg(F.avg("score").alias("hight_user_avg_score")).show()def method05():# 需求5:查询每个用户的平均打分,最低打分,最高打分df.select("userid", "score").groupBy("userid").agg(F.avg("score").alias("u_avg_score")).show()df.select("userid", "score").groupBy("userid").agg(F.max("score").alias("u_avg_score")).show()df.select("userid", "score").groupBy("userid").agg(F.min("score").alias("u_avg_score")).show()def method06():# 需求6:查询被评分超过100次的电影的平均分排名前10df.groupBy("movieid").agg(F.count("movieid").alias("m_count"),F.avg("score").alias("m_avg_score")).where("m_count>100").orderBy("m_avg_score", ascending=False).limit(10).show()if __name__ == '__main__':print("move example")spark = SparkSession.builder.appName("move example").master("local[*]").getOrCreate()schema = StructType().add("userid", StringType()).add("movieid", StringType()) \.add("score", IntegerType()).add("datestr", StringType())df = spark.read \.format("csv") \.option("sep", "\t") \.schema(schema=schema) \.load("file:///export/data/workspace/ky06_pyspark/_03_SparkSql/data/u.data")method01()method02()method03()method04()method05()method06()spark.stop()

总结

今天主要和大家分享了Pyspark_SQL的一个电影综合案例。

这篇关于[博学谷学习记录] 超强总结,用心分享|Pyspark_SQL3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/847019

相关文章

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和