package movies

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext} object Movice {
def main(args: Array[String]): Unit = {
val cof = new SparkConf ()
.setAppName ( this.getClass.getSimpleName )
.setMaster ( "local[1]" )
val sc = new SparkContext ( cof ) val users1 = sc.textFile ( "D:\\学习笔记\\资料汇总\\day02\\资料\\热门电影的数据\\users.dat" )
val movies1 = sc.textFile ( "D:\\学习笔记\\资料汇总\\day02\\资料\\热门电影的数据\\movies.dat" )
val ratings1 = sc.textFile ( "D:\\学习笔记\\资料汇总\\day02\\资料\\热门电影的数据\\ratings.dat" ) //1:评分(平均分)最高的10部电影 (moviceId, (userId, rating))
val ratings2: RDD[(Int, (String, Int))] = ratings1.map ( tp => {
val splits: Array[String] = tp.split ( "::" )
val userId = splits ( 0 )
val moviceId = splits ( 1 ).toInt
val rating = splits ( 2 ).toInt
(moviceId, (userId, rating))
} ) //(moviceId, (userId, 1))
val rating4:RDD[(Int,(Int,Int))]=ratings2.map(tp=>{
val rating=tp._2._2
val moviceId=tp._1
(moviceId,(rating,1))
}) val group2: RDD[(Int, Iterable[(Int, Int)])] =rating4.groupByKey() //聚合(movid,rtingsum,counsum)
val rantresult1: RDD[(Int, Int, Int)] = group2.map(tp=>{
val rantsum=tp._2.map(tp=>tp._1).sum
val countsum=tp._2.map(_._2).sum
(tp._1,rantsum,countsum)
})
// //取平均值
// val ranresult2=rantresult1.map(tp=>{
// (tp._1,tp._2/tp._3)
// }).sortBy(-_._2).take(10).foreach(println) //2:18 - 24 岁的男性年轻人 最喜欢看的10部电影
val users2: RDD[(Int, (String, Int))] = users1.map ( tp => {
val splits: Array[String] = tp.split ( "::" )
val userId = splits ( 0 ).toInt
val gender = splits ( 1 )
val age = splits ( 2 ).toInt (userId, (gender, age))
} ) val ratings3: RDD[(Int, String)] = ratings1.map ( tp => {
val splits: Array[String] = tp.split ( "::" )
val userId = splits ( 0 ).toInt
val moviceId = splits ( 1 )
(userId, moviceId)
} ) // users2.join ( ratings3 ).filter ( tp => {
// tp._2._1._1.equals ( "M" )
// tp._2._1._2 >= 18 && tp._2._1._2 <= 24
// } ).map ( tp => (
// tp._2._2, 1)
// ).reduceByKey ( _ + _ ).sortBy ( -_._2 ).take ( 10 ).foreach ( println ) //3:女性观看次数最多的10部电影名称及观看次数
users2.join(ratings3).filter(tp=>{
tp._2._1._1.equals("F")
}).map(tp=>(
tp._2._2,1
)).reduceByKey(_+_).sortBy(-_._2).take(10).foreach(println)
 
  sc.stop()
}
}
 

spark热门电影的更多相关文章

  1. 爬虫神器XPath,程序员带你免费获取周星驰等明星热门电影

    本教程由"做全栈攻城狮"原创首发,本人大学生一枚平时还需要上课,但尽量每日更新文章教程.一方面把我所习得的知识分享出来,希望能对初学者有所帮助.另一方面总结自己所学,以备以后查看. ...

  2. python爬虫——词云分析最热门电影《后来的我们》

    1 模块库使用说明 1.1 requests库 requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更 ...

  3. 微信小程序开发(3) 热门电影

    在这篇微信小程序开发教程中,我们将介绍如何使用微信小程序开发热门电影及预览功能. 本文主要分为两个部分,小程序主体部分及电影主页和详情页页面部分 一.小程序主体部分 一个小程序主体部分由三个文件组成, ...

  4. 爬虫实战【11】Python获取豆瓣热门电影信息

    之前我们从猫眼获取过电影信息,而且利用分析ajax技术,获取过今日头条的街拍图片. 今天我们在豆瓣上获取一些热门电影的信息. 页面分析 首先,我们先来看一下豆瓣里面选电影的页面,我们默认选择热门电影, ...

  5. 基于Spark的电影推荐系统(电影网站)

    第一部分-电影网站: 软件架构: SpringBoot+Mybatis+JSP 项目描述:主要实现电影网站的展现 和 用户的所有动作的地方 技术选型: 技术 名称 官网 Spring Boot 容器 ...

  6. 基于Spark的电影推荐系统(实战简介)

    写在前面 一直不知道这个专栏该如何开始写,思来想去,还是暂时把自己对这个项目的一些想法 和大家分享 的形式来展现.有什么问题,欢迎大家一起留言讨论. 这个项目的源代码是在https://github. ...

  7. 基于Spark的电影推荐系统(推荐系统~2)

    第四部分-推荐系统-数据ETL 本模块完成数据清洗,并将清洗后的数据load到Hive数据表里面去 前置准备: spark +hive vim $SPARK_HOME/conf/hive-site.x ...

  8. 基于Spark的电影推荐系统(推荐系统~4)

    第四部分-推荐系统-模型训练 本模块基于第3节 数据加工得到的训练集和测试集数据 做模型训练,最后得到一系列的模型,进而做 预测. 训练多个模型,取其中最好,即取RMSE(均方根误差)值最小的模型 说 ...

  9. 基于Spark的电影推荐系统(推荐系统~7)

    基于Spark的电影推荐系统(推荐系统~7) 22/100 发布文章 liuge36 第四部分-推荐系统-实时推荐 本模块基于第4节得到的模型,开始为用户做实时推荐,推荐用户最有可能喜爱的5部电影. ...

随机推荐

  1. NoSQL数据库技术实战-第1章 NoSQL与大数据简介 NoSQL数据库的类型

    键值存储数据库临时性:如Memcached.临时性的键值数据库把数据存储在内存中,在两种情况下会造成上数据的丢失,一是断电,而是数据内容超出内存大小.这种处理的好处是非常快.永久型:如Tokyo Ty ...

  2. 集成 jpush

    给 iOS 应用添加推送功能是一件比较麻烦的事情,本篇文章收集了集成 jpush-react-native 的常见问题,目的是为了帮助用户更好地排查问题 1. 收不到推送 确保是在真机上测试,而不是在 ...

  3. React组件:拖拽布局Dragact v0.1.6 发布

    仓库地址:Dragact爽滑的拖拽组件 大家好,新年已经过去,大家又投入了繁忙的工作当中,由于我在国外,因此压根儿没有休息... 少说废话,上周一周的时间里,我陆陆续续的为Dragact组件进行了一系 ...

  4. 题解 【POJ1187】 陨石的秘密

    解析 考虑到数据范围,其实我们可以用记搜. 设\(f[a][b][c][d]\)表示还剩\(a\)个'{}',\(b\)个"[]",\(c\)个"()",深度\ ...

  5. No message错误

    Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException No message 错误原因是因为表单提交的 ...

  6. CDOJ 1135 邱老师看电影 概率dp

    邱老师看电影 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  7. linux下防止rm-rf /删除,让人崩溃

    1.下载safe-rm软件: safe-rm下载地址: https://launchpad.net/safe-rm命令 wget -c https://launchpadlibrarian.net/1 ...

  8. fflush函数

    /*** flush.c ***/ #include<stdio.h> #include<string.h> #include<stdlib.h> int main ...

  9. AJAX-基础-1

    概述 AJAX = Asynchronous JavaScript And XML(异步 JavaScript 及 XML) AJAX 是 Asynchronous JavaScript And XM ...

  10. windows 安装多个版本的jdk后修改 环境变量不起作用

    本机已经安装了jdk1.6,而比较早期的项目需要依赖jdk1.5,于是同时在本机安装了jdk1.5和jdk1.6. 安装jdk1.5前,执行java -version得到java version &q ...