spark热门电影
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热门电影的更多相关文章
- 爬虫神器XPath,程序员带你免费获取周星驰等明星热门电影
本教程由"做全栈攻城狮"原创首发,本人大学生一枚平时还需要上课,但尽量每日更新文章教程.一方面把我所习得的知识分享出来,希望能对初学者有所帮助.另一方面总结自己所学,以备以后查看. ...
- python爬虫——词云分析最热门电影《后来的我们》
1 模块库使用说明 1.1 requests库 requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更 ...
- 微信小程序开发(3) 热门电影
在这篇微信小程序开发教程中,我们将介绍如何使用微信小程序开发热门电影及预览功能. 本文主要分为两个部分,小程序主体部分及电影主页和详情页页面部分 一.小程序主体部分 一个小程序主体部分由三个文件组成, ...
- 爬虫实战【11】Python获取豆瓣热门电影信息
之前我们从猫眼获取过电影信息,而且利用分析ajax技术,获取过今日头条的街拍图片. 今天我们在豆瓣上获取一些热门电影的信息. 页面分析 首先,我们先来看一下豆瓣里面选电影的页面,我们默认选择热门电影, ...
- 基于Spark的电影推荐系统(电影网站)
第一部分-电影网站: 软件架构: SpringBoot+Mybatis+JSP 项目描述:主要实现电影网站的展现 和 用户的所有动作的地方 技术选型: 技术 名称 官网 Spring Boot 容器 ...
- 基于Spark的电影推荐系统(实战简介)
写在前面 一直不知道这个专栏该如何开始写,思来想去,还是暂时把自己对这个项目的一些想法 和大家分享 的形式来展现.有什么问题,欢迎大家一起留言讨论. 这个项目的源代码是在https://github. ...
- 基于Spark的电影推荐系统(推荐系统~2)
第四部分-推荐系统-数据ETL 本模块完成数据清洗,并将清洗后的数据load到Hive数据表里面去 前置准备: spark +hive vim $SPARK_HOME/conf/hive-site.x ...
- 基于Spark的电影推荐系统(推荐系统~4)
第四部分-推荐系统-模型训练 本模块基于第3节 数据加工得到的训练集和测试集数据 做模型训练,最后得到一系列的模型,进而做 预测. 训练多个模型,取其中最好,即取RMSE(均方根误差)值最小的模型 说 ...
- 基于Spark的电影推荐系统(推荐系统~7)
基于Spark的电影推荐系统(推荐系统~7) 22/100 发布文章 liuge36 第四部分-推荐系统-实时推荐 本模块基于第4节得到的模型,开始为用户做实时推荐,推荐用户最有可能喜爱的5部电影. ...
随机推荐
- k8s部署ingress-nginx
ingress-nginx的部署方式有多种,本文介绍nodeport方式和hostnetwork方式: 一.nodeport方式 1.下载mandatory.yaml文件:https://raw.gi ...
- mysql 模拟oracle中的序列
因业务需要,把oracle 数据据转成mysql,同时oracle中程序本来一直在用 序列, mysql中没有,所以需要在mysql中新建一个表进行模拟, CREATE TABLE `sequence ...
- BZOJ 3881[COCI2015]Divljak (AC自动机+dfs序+lca+BIT)
显然是用AC自动机 先构建好AC自动机,当B中插入新的串时就在trie上跑,对于当前点,首先这个点所代表的串一定出现过,然后这个点指向的fail也一定出现过.那么我们把每个点fail当作父亲,建一棵f ...
- 【Wince-自定义控件】ImageButton 带图片、文字
1.看图 可以实现MouseDown改变背景颜色或背景图片. 遗憾是没有实现键盘触发按钮事件. 2.选择继承自Control基类 public class ImageButton : Control ...
- react-缓存
目录结构: 用到缓存的地方: 缓存的方法 清楚缓存
- jquery实现input输入框点击加减数值随之变动
<input class="addBtn min" type="button" value="-" /><input cl ...
- keras手写数字识别
import kerasimport timefrom keras.utils import np_utils start = time.time()(x_train, y_train), (x_te ...
- LOJ #2734 Luogu P3615 [JOI2016春季合宿]Toilets (结论、贪心)
题目链接 (loj) https://loj.ac/problem/2734 (luogu) https://www.luogu.org/problem/P3615 题解 嗯,考场上肝了\(3h\)然 ...
- Codeforces 963 A. Alternating Sum(快速幂,逆元)
Codeforces 963 A. Alternating Sum 题目大意:给出一组长度为n+1且元素为1或者-1的数组S(0~n),数组每k个元素为一周期,保证n+1可以被k整除.给a和b,求对1 ...
- PHP-windows下IDEA配置网页地址