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 F

def 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次的电影的平均分排名前10
    df.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的一个电影综合案例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/4465.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

会声会影2023新版本功能详情讲解

会声会影2023Corel VideoStudio一款功能丰富的视频编辑软件。会声会影2023简单易用,具有史无前例的强大功能,拖放式标题、转场、覆叠和滤镜,色彩分级、动态分屏视频和新增强的遮罩创建器,超越基本编辑,实现影院级效果。…

【Django 网页Web开发】12. 实战项目:分页组件的封装 面向接口编程(05)(保姆级图文)

目录1. 对象的方式使用分页组件2. 项目结构3. 编写pagination.py3.1 pagination.py3.2 view.py4. bug修改之:url中搜索关键词q和page4.1 构造url的一个雏形4.2 修改我们的分页组件4.3 搜索小bug5. 应用分页组件,几行代码实现用户管理分页5.1 批量创建用户…

『 MySQL篇 』:MySQL 索引相关问题

目录 一 . 认识索引 二. 索引的数据结构 1 . B Tree vs Hash 2 . B Tree vs 二叉树/红黑树 3 . B 树 vs B树 三. 索引的使用 1. 索引分类 2. 索引用法 一 . 认识索引 当我们在查询一本书中的内容时 , 你会选择翻页每一页去查询呢 ? 还是说按照书的目录去找 ? 答案是…

springmvc(一)

SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装。 对于SpringMVC我们主要学习如下内容: SpringMVC简介 请求与响应 REST风格 SSM整合(注解版) 拦截器 SpringMVC是处于Web层的框架,所以其主要的作用就是用…

微信小程序开发:微信小程序生命周期总结

前言 在微信小程序开发中,关于微信小程序API的使用是必备技能,但是关于微信小程序的生命周期也是首先要了解和掌握的知识点。尤其是现在的前端开发领域,关于前端的各种框架和技术都要会,而且微信小程序的语法就是JS的翻版&#xf…

Java 线程安全

一、什么是线程安全 当多个线程访问共享资源时,每个线程都会各自对共享资源进程操作,导致数据不一致,造成程序不能正确的得到结果,此时需要让多个线程排队访问共享资源,让线程安全,才能保证数据安全的被访问…

Jdk动态代理和Cglib动态代理的区别

一: 前言: 代理模式分为 静态代理 和 动态代理,今天我要讲的是动态代理的两种常见、也是被广泛使用的实现方式-------jdk动态代理 和 Cglib动态代理 二:Jdk动态代理实现分析: 结构示意图如下,我定义了一…

FrIf-FrIf_Transmit发送流程【配置参数FrIfImmediate:立即传输还是解耦传输】和代码分析

总目录链接==>> AutoSAR入门和实战系列总目录 文章目录 1 FrIf_Transmit中的 PDU 的配置的传输模式2 代码分析1 FrIf_Transmit中的 PDU 的配置的传输模式 每当FrIf的上层模块想要请求特定 PDU 的传输时,它都会调用 FrIf_Transmit 函数。调用 FrIf_Transmit的时候传递…

C语言--文件操作

目录前言什么是文件程序文件数据文件文件指针FILE结构的维护文件的打开和关闭文件的打开方式文件的顺序读写fputcfgetcfputsfgetsfprintffscanf文件流 标准输入/输出流sscanf和sprintf前言 在讲文件操作之前,我们先来思考这个问题: 我们为什么要使用文件…

大数据技术之Spark(一)——Spark概述

大数据技术之Spark(一)——Spark概述 文章目录前言一、Spark基础1.1 Spark是什么1.2 Spark VS Hadoop1.3 Spark优势及特点1.3.1 优秀的数据模型和丰富计算抽象1.3.3 spark的特点1.4 Spark 运行环境1.5 Spark运行架构1.5.1 Driver1.5.2 Executor1.5.3 Mas…

Java设计模式-4、适配器模式

适配器模式 在我们的应⽤程序中我们可能需要将两个不同接⼝的类来进⾏通信,在不 修改这两个的前提下我们可能会需要某个中间件来完成这个衔接的过程。 这个中间件就是适配器。所谓适配器模式就是将⼀个类的接⼝,转换成客 户期望的另⼀个接⼝。它可以让原…

【协议】03、深度解剖之HTTP协议

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的标准、约定或者规则的集合,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。使用的默认端口为80端口。浏览器的默认端口也是80端…

【操作系统】第二章:进程管理

第二章:进程管理 OVERVIEW第二章:进程管理一、进程与线程1.进程概述(1)进程PCB:(2)进程的组成:(3)进程的特征:2.进程的状态与转换(1&a…

基于储能进行调峰和频率调节研究【超线性增益的联合优化】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

算法练习随记(三)

1.全排列 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 输入&#x…

如何用AI玩转IG广告,打造高互动的引流营销?

如何用AI玩转IG广告,打造高互动的引流营销?相信做引流的卖家,都有接触过IG广告,然而流量引过来了,怎么处理客户的私信? 私信对话是你与粉丝培养深度关系的管道,好的互动不仅能养成高黏着度的铁粉…

5 个Python高级特性让你在不知不觉中成为Python高手

你已经使用 Python 编程了一段时间,编写脚本并解决各种问题。是你的水平出色吗?你可能只是在不知不觉中利用了Python的高级特性。 从闭包(closure)到上下文管理器(context managers),本文给出一…

Linked List

链表在力扣上的介绍:链表(Linked List)是最简单的线性的、动态数据结构。理解它是理解树结构、图结构的基础。区别于数组,链表中的元素不是存储在内存中连续的一片区域,链表中的数据存储在每一个称之为「结点」复合区域…

五、传输层

(一)TCP传输控制协议 可靠的、面向连接的字节流服务,全双工,有端口寻址功能 1、TCP的三种机制 1.使用序号对分段的数据进行标记,便于调整数据包 2.TCP使用确认、校验和和定时器系统提供可靠性 3.TCP使用可变大小的…

ACK Net Exporter 与 sysAK 出击:一次深水区的网络疑难问题排查经历

作者:谢石、碎牙 不久前的一个周五的晚上,某客户A用户体验提升群正处在一片平静中,突然,一条简短的消息出现,打破了这种祥和: “我们在ACK上创建的集群,网络经常有几百毫秒的延迟。" 偶发…