用Scala的spark写一个项目,包含代码和数据
时间: 2024-02-17 22:00:58 浏览: 64
spark项目代码以及数据
好的,以下是一个使用Scala编写的Spark项目,用于计算一组电影评分数据集的平均评分,并输出评分最高的10部电影。
数据集包含三个文件:movies.csv,ratings.csv,tags.csv。movies.csv文件包含电影的ID、名称和类型;ratings.csv文件包含用户对电影的评分;tags.csv文件包含用户对电影的标签。
代码:
```scala
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions.{avg, desc}
object MovieRatings {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder.appName("MovieRatings").getOrCreate()
// 读取数据
val movies = spark.read
.option("header", true)
.option("inferSchema", true)
.csv("hdfs://path/to/movies.csv")
val ratings = spark.read
.option("header", true)
.option("inferSchema", true)
.csv("hdfs://path/to/ratings.csv")
// 计算平均评分
val avgRatings = ratings.groupBy("movieId")
.agg(avg("rating").as("avg_rating"))
// 将电影名称和平均评分连接起来
val movieAvgRatings = movies.join(avgRatings, Seq("movieId"))
// 按照平均评分排序,并选出前10部电影
val topMovies = movieAvgRatings
.orderBy(desc("avg_rating"))
.limit(10)
// 输出结果
topMovies.show()
// 停止SparkSession
spark.stop()
}
}
```
数据:
movies.csv
```
movieId,title,genres
1,Toy Story (1995),Adventure|Animation|Children|Comedy|Fantasy
2,Jumanji (1995),Adventure|Children|Fantasy
3,Grumpier Old Men (1995),Comedy|Romance
4,Waiting to Exhale (1995),Comedy|Drama|Romance
5,Father of the Bride Part II (1995),Comedy
```
ratings.csv
```
userId,movieId,rating,timestamp
1,2,3.5,1112486027
1,29,3.5,1112484676
2,2,3.0,835355493
2,62,3.0,835355749
3,2,4.0,1298862370
3,62,3.0,1298922049
```
tags.csv
```
userId,movieId,tag,timestamp
15,339,sandra 'boring' bullock,1138537770
15,1955,dentist,1193435061
```
注意:这里的代码和数据只是一个简单的示例,实际项目中需要根据具体需求进行修改和扩展。数据应该存放在分布式文件系统(如HDFS)中,而不是本地文件系统。
阅读全文