Spark-RDD實戰影評數據分析一 ---------

---------

數據集下載

數據結構分析

本次所分析的數據有用戶、電影、評分三個表,結構如下:
用戶表
在這裏插入圖片描述
電影表
在這裏插入圖片描述
評分表
在這裏插入圖片描述
數據一瞥
在這裏插入圖片描述

數據分析

一共有十個需求,需求一到五作爲學習參考,需求六到十自己動手實踐。
項目結構如圖:
在這裏插入圖片描述

在分析之前,先建立一個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

下面是十個需求的具體問題:

  1. 求被評分次數最多的 10 部電影,並給出評分次數(電影名,評分次數)
  2. 分別求男性,女性當中評分最高的 10 部電影(性別,電影名,影評分)
  3. 分別求男性,女性看過最多的 10 部電影(性別,電影名)
  4. 年齡段在“18-24”的男人,最喜歡看 10 部電影
  5. 求 movieid = 2116 這部電影各年齡段(因爲年齡就只有 7 個,就按這個 7 個分就好了)的平均影評(年齡段,影評分)
  6. 求最喜歡看電影(影評次數最多)的那位女性評最高分的 10 部電影的平均影評分(觀影者,電影名,影評分)
  7. 求好片(評分>=4.0)最多的那個年份的最好看的 10 部電影
  8. 求 1997 年上映的電影中,評分最高的 10 部 Comedy 類電影
  9. 該影評庫中各種類型電影中評價最高的 5 部電影(類型,電影名,平均影評分)
  10. 各年評分最高的電影類型(年份,類型,影評分)

下面我們看十個需求分別如何實現。

需求一到五
需求六到十

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章