[博学谷学习记录] 超强总结,用心分享|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

相关文章

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,