用Spark SQL分析热门电影的TopN
1.数据结构
数据可以在此下载 https://pan.baidu.com/s/1eSNt6E2#list/path=%2FshareData
文件夹中包含三个数据文件,一个说明文件
数据结构如下
users.dat
5220::M::25::7::91436
5221::F::56::1::96734
5222::M::25::12::94501
5223::M::56::10::11361
5224::M::35::1::10016
movies.dat
5::Father of the Bride Part II (1995)::Comedy
6::Heat (1995)::Action|Crime|Thriller
7::Sabrina (1995)::Comedy|Romance
8::Tom and Huck (1995)::Adventure|Children’s
9::Sudden Death (1995)::Action
ratings.dat
1::1193::5::978300760
1::661::3::978302109
1::914::3::978301968
1::3408::4::978300275
1::2355::5::978824291
README是说明文件,说明了字段含意
2.TopN求值
求出TopN其实只要ratings.dat这个文件的数据就行了。
步骤
- 求出每部电影的平均评分
- 排序
3.代码
package main.scala.com.hlf.project.moguyun.movies
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
/**
* 用RDD与DataFrame计算电影topN
* Created by hlf on 2016/11/1.
*/
object MoviesTopN {
def main(args: Array[String]) {
val conf = new SparkConf()
.setAppName("moviesRatings")
.setMaster("local")
//可调优参数
.set("spark.sql.shuffle.partitions","4")//调节并行度
.set("spark.sql.files.maxPartitionBytes","256")//调节每个partition大小
.set("spark.sql.files.openCostInBytes",