对音乐专辑的数据集albums.csv进行spark分析

前言
本项目所使用的数据及其编写的代码,可戳 https://download.csdn.net/download/atuo200/12716083下载。本项目采用scala编写数据分析代码,若采用python编写数据分析代码,可参考 基于Spark的音乐专辑数据分析展示。

数据来源
数据集albums.csv,包含了10万条音乐专辑的数据。主要字段说明如下:

album_title:音乐专辑名称
genre:专辑类型
year_of_pub: 专辑发行年份
num_of_tracks: 每张专辑中单曲数量
num_of_sales:专辑销量
rolling_stone_critic:滚石网站的评分
mtv_critic:全球最大音乐电视网MTV的评分
music_maniac_critic:音乐达人的评分
数据分析
对音乐专辑的数据集albums.csv进行spark分析,按年份分组统计音乐专辑的滚石网站平均评分,结果按评分降序排列。要求分别基于dataframe和rdd实现,列出相应步骤与Python代码。
(1)用dataframe的SQl语句进行查询,用show列出结果;
(2)用rdd的算子进行计算,用take列出结果;

使用DataFrame实现:

```python
# 导入必要的库
from pyspark.sql import SparkSession
from pyspark.sql.functions import avg

# 创建SparkSession
spark = SparkSession.builder.appName("Albums Analysis").getOrCreate()

# 读取数据集
data= spark.read.csv("albums.csv", header=True, inferSchema=True)

# 使用SQL语句进行查询
data.createOrReplaceTempView("albums")
result_data= spark.sql("SELECT year, AVG(rating) AS avg_rating FROM albums GROUP BY year ORDER BY avg_rating DESC")

# 显示结果前五个数据
result_data.show(5)
```

使用RDD实现:

```python
# 导入必要的库
from pyspark.sql import SparkSession

# 创建SparkSession
spark = SparkSession.builder.appName("Albums Analysis").getOrCreate()

# 读取数据集
data= spark.sparkContext.textFile("albums.csv")

# 跳过表头
header = data.first()
data= data.filter(lambda line: line != header)

# 将每行数据拆分为字段
data= data.map(lambda line: line.split(","))

# 按年份分组,计算平均评分
result_data= data.map(lambda fields: (fields[2], float(fields[3]))) \
                .groupByKey() \
                .mapValues(lambda ratings: sum(ratings) / len(ratings)) \
                .sortBy(lambda x: x[1], ascending=False)

# 取前五个数据
result = result_data.take(5)

# 打印结果
for row in result:
    print(row)
```

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值