Apache Spark 练习六:使用Spark分析音乐专辑数据

这篇具有很好参考价值的文章主要介绍了Apache Spark 练习六:使用Spark分析音乐专辑数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、源数据

本章所分析的数据来自于Kaggle公开的、人工合成的音乐专辑发行数据(https://www.kaggle.com/datasets/revilrosa/music-label-dataset)。以下,我们只针对albums.csv文件进行分析。该数据具体包括以下字段:

  • id: the album identifier;
  • artist_id: the artist identifier;
  • album_title: the title of the album;
  • genre: the genre of the album. An artist can release albums of different genres;
  • year_of_pub: the year the album was published;
  • num_of_tracks: how many tracks there are in the album (a small number can mean longer tracks);
  • num_of_sales: how many sales the album has made in the first month after the release;
  • rolling_stone_critic: how magazine Rolling Stone has rated the album;
  • mtv_critic: how MTV has rated the album;
  • music_maniac_critic: how review site Music Maniac has rated the album.

二、练习题

0. 数据预处理

以下,我们将csv文件从HDFS中读取进来,并转换为Spark DataFrame格式。文章来源地址https://www.toymoban.com/news/detail-556359.html

val spark = SparkSession
  .builder()
  .appName("Albums")
  .getOrCreate()
import spark.implicits._

val df = spark.read
  .option("header", "true")
  .option("inferSchema", "true")
  .csv("hdfs:///SparkLearning/albums.csv")

1. 统计各类型专辑的数量

val res = df
  .select($"genre")
  .groupBy($"genre")
  .count()
  .orderBy($"count".desc)

2. 统计各类型专辑的销量总数

val res = df
  .select($"genre", $"num_of_sales")
  .groupBy($"genre")
  .sum("num_of_sales")
  .withColumnRenamed("sum(num_of_sales)", "total_sales")
  .orderBy($"total_sales".desc)

3. 统计近20年每年发行的专辑数量和单曲数量

val res = df
  .select("year_of_pub", "num_of_tracks")
  .filter($"year_of_pub" >= 2000)
  .groupBy($"year_of_pub")
  .agg("num_of_tracks" -> "count", "num_of_tracks" -> "sum")
  .withColumnRenamed("count(num_of_tracks)", "total_albums")
  .withColumnRenamed("sum(num_of_tracks)", "total_tracks")
  .orderBy("year_of_pub")

4. 分析总销量前五的专辑类型的各年份销量

val res = df
  .select($"genre", $"num_of_sales")
  .groupBy("genre")
  .sum("num_of_sales")
  .withColumnRenamed("sum(num_of_sales)", "total_sales")
  .orderBy($"total_sales".desc)
  .limit(5)
  .alias("t1")
  .join(
    df.select($"genre", $"num_of_sales", $"year_of_pub").alias("t2"),
    $"t1.genre" === $"t2.genre"
  )
  .groupBy("t2.genre", "t2.year_of_pub")
  .sum("t2.num_of_sales")
  .orderBy($"genre", $"year_of_pub")

5. 分析总销量前五的专辑类型,在不同评分体系中的平均评分

val res = df
  .select($"genre", $"num_of_sales")
  .groupBy("genre")
  .sum("num_of_sales")
  .withColumnRenamed("sum(num_of_sales)", "total_sales")
  .orderBy($"total_sales".desc)
  .limit(5)
  .alias("t1")
  .join(
    df.select(
      $"genre",
      $"rolling_stone_critic",
      $"mtv_critic",
      $"music_maniac_critic"
    ).alias("t2"),
    $"t1.genre" === $"t2.genre"
  )
  .groupBy("t2.genre")
  .agg(
    "rolling_stone_critic" -> "avg",
    "mtv_critic" -> "avg",
    "music_maniac_critic" -> "avg"
  )
  .orderBy($"genre")

到了这里,关于Apache Spark 练习六:使用Spark分析音乐专辑数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Apache Spark 的基本概念和在大数据分析中的应用

    Apache Spark是一个开源的大数据分析框架,可以快速高效地处理大规模的数据集。Spark具有以下特点: 快速性: Spark使用内存计算,能够在迭代算法、交互式数据挖掘和实时流处理等场景中表现出色。 灵活性: Spark支持多种编程语言和数据源,包括Java、Scala、Python、R等,可以

    2024年02月10日
    浏览(47)
  • 介绍 Apache Spark 的基本概念和在大数据分析中的应用

    Apache Spark是一种基于内存计算的大数据处理框架,它支持分布式计算,并且能够处理比传统处理框架更大量的数据。以下是Apache Spark的一些基本概念和在大数据分析中的应用: RDD (Resilient Distributed Dataset):RDD是Spark的核心概念,它是一个分布式的、不可变的数据集。RDD可以从

    2024年02月13日
    浏览(53)
  • 介绍 Apache Spark 的基本概念和在大数据分析中的应用。

    Apache Spark 是一个快速的开源大数据处理引擎,可以用于大数据处理、机器学习、图形计算等领域。它可以在多种计算环境中运行,包括独立模式、YARN、Mesos、Kubernetes等云计算平台。 Spark基于RDD(Resilient Distributed Datasets)模型,RDD是一个不可变的分布式对象集合,可通过并行

    2024年02月10日
    浏览(41)
  • 使用Apache Spark处理Excel文件的简易指南

    在日常的工作中,表格内的工具是非常方便的x,但是当表格变得非常多的时候,就需要一些特定的处理。Excel作为功能强大的数据处理软件,广泛应用于各行各业,从企业管理到数据分析,可谓无处不在。然而,面对大型且复杂的数据,Excel的处理能力可能力不从心。 对此,

    2024年01月19日
    浏览(46)
  • Azure - 机器学习:使用 Apache Spark 进行交互式数据整理

    关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。 数据整理已经成为机器学习项目中最重要的步骤之一。

    2024年02月08日
    浏览(49)
  • 如何在Amazon EMR上使用RAPIDS加速Apache Spark流水线

    : [Amazon Web Services re:Invent 2023, Rapids Spark, Accelerate Apache Spark Pipelines, Amazon Emr, Rapids, Nvidia, Gpu Acceleration] 本文字数: 1000, 阅读完需: 5 分钟 如视频不能正常播放,请前往bilibili观看本视频。 https://www.bilibili.com/video/BV1uw41187VA RAPIDS加速器可以为Amazon EMR上的Apache Spark数据处理流

    2024年02月04日
    浏览(48)
  • Apache Spark简介

    作者:禅与计算机程序设计艺术 Apache Spark™ 是由加州大学伯克利分校 AMPLab 提出并开源的快速通用计算引擎。它最初用于解决大规模数据集上的海量数据分析,但随着它的不断发展,已经成为用于云计算、机器学习和流处理等领域的核心组件。Spark 支持多种编程语言,包括

    2024年02月07日
    浏览(40)
  • spark考试(练习题)

    点击下载练习题word文档! 点击下载RDD编程笔记! 编程题: 1.(1.5分)单选题 1.5 下列选项中,哪个不属于消息系统()。 A Kafka B RabbitMQ C ActiveMQ D Zookeeper 参考答案: D 解析: 无 2.(1.5分)单选题 1.5 下列选项中,说法正确的是() A 批处理时间间隔必须是窗口滑动时间间隔的整数倍

    2024年02月05日
    浏览(41)
  • spark考试练习题

    第一章 1.Spark2.X新特征简单讲述三方面,分别为精简的API,Spark作为编译器,智能优化。2.Stage 的 Task 的数量由什么决定:Partition3.Spark 哪个模式利用的Hadoop 的资源管理:spark on YARN。4.Spark特点包括:易用,迅速。5.本章涉及的Spark与Hadoop的区别为:解决问题方式不同,解决问题方式

    2024年02月12日
    浏览(43)
  • 【Spark练习】RDD分区操作

    2.1 textFile 对于textFile而言,如果 没有在方法中指定分区数 ,则sc.defaultMinPartitions默认为 min(defaultParallelism,2) ,其中,defaultParallelism对应的就是spark.default.parallelism,如果是从HDFS中读取文件,则分区数为文件分片数(比如,128MB/片) rdd的分区数 = max(本地file的分片数, sc.default

    2024年02月02日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包