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

相关文章

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

MySQL使用EXISTS检查记录是否存在的详细过程

《MySQL使用EXISTS检查记录是否存在的详细过程》EXISTS是SQL中用于检查子查询是否返回至少一条记录的运算符,它通常用于测试是否存在满足特定条件的记录,从而在主查询中进行相应操作,本文给大... 目录基本语法示例数据库和表结构1. 使用 EXISTS 在 SELECT 语句中2. 使用 EXIS

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Python利用PySpark和Kafka实现流处理引擎构建指南

《Python利用PySpark和Kafka实现流处理引擎构建指南》本文将深入解剖基于Python的实时处理黄金组合:Kafka(分布式消息队列)与PySpark(分布式计算引擎)的化学反应,并构建一... 目录引言:数据洪流时代的生存法则第一章 Kafka:数据世界的中央神经系统消息引擎核心设计哲学高吞吐

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程