---------
數據結構分析
本次所分析的數據有用戶、電影、評分三個表,結構如下:
用戶表
電影表
評分表
數據一瞥
數據分析
一共有十個需求,需求一到五作爲學習參考,需求六到十自己動手實踐。
項目結構如圖:
在分析之前,先建立一個Utils類,主要用於初始化配置信息以及解析原始數據。(記得修改數據文件路徑)
package movie
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
class Utils {
val conf = new SparkConf().setAppName(“FileReview”).setMaster(“local”)
//初始化sc對象
val sc = new SparkContext(conf)
sc.setLogLevel(“ERROR”)
val movie = sc.textFile(“F:\IdeaProjects\SparkTest\movieData\movies.dat”)
val ratings = sc.textFile(“F:\IdeaProjects\SparkTest\movieData\ratings.dat”)
val users = sc.textFile(“F:\IdeaProjects\SparkTest\movieData\users.dat”)
//(電影ID,電影名稱,電影類型)
val movieRdd:RDD[(String, String, String)] = movie.map(.split("::")).map(m=> (m(0), m(1), m(2)))
//(用戶ID,電影ID,評分,時間)
val ratingsRdd:RDD[(String, String, String, String)]=ratings.map(.split("::")).map(r=> (r(0), r(1), r(2), r(3)))
//(用戶ID,性別,年齡,職業)
val usersRdd:RDD[(String, String, String, String, String)]=users.map(_.split("::")).map(u=> (u(0), u(1), u(2), u(3), u(4)))
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
下面是十個需求的具體問題:
- 求被評分次數最多的 10 部電影,並給出評分次數(電影名,評分次數)
- 分別求男性,女性當中評分最高的 10 部電影(性別,電影名,影評分)
- 分別求男性,女性看過最多的 10 部電影(性別,電影名)
- 年齡段在“18-24”的男人,最喜歡看 10 部電影
- 求 movieid = 2116 這部電影各年齡段(因爲年齡就只有 7 個,就按這個 7 個分就好了)的平均影評(年齡段,影評分)
- 求最喜歡看電影(影評次數最多)的那位女性評最高分的 10 部電影的平均影評分(觀影者,電影名,影評分)
- 求好片(評分>=4.0)最多的那個年份的最好看的 10 部電影
- 求 1997 年上映的電影中,評分最高的 10 部 Comedy 類電影
- 該影評庫中各種類型電影中評價最高的 5 部電影(類型,電影名,平均影評分)
- 各年評分最高的電影類型(年份,類型,影評分)