Spark SQL电影分析案例

本文通过Spark SQL分析电影数据,提取TopN热门电影。首先介绍数据结构,接着展示如何计算每部电影的平均评分并进行排序。然后提供实际的代码实现,并讨论了针对DataFrame的优化策略,包括并行度、分区大小、小文件合并和广播JOIN等。内容源于DT大数据梦工厂的Spark专家王家林老师分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用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这个文件的数据就行了。
步骤

  1. 求出每部电影的平均评分
  2. 排序

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",
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值