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部电影. ...
随机推荐
- OpenGL相关文章
OpenGL之glMatrixMode函数的用法 gluOrtho2D和glViewport的作用&窗口与显示的关系 glViewport函数用法 纹理映射
- TCP_Wrappers访问控制
一.TCP_Wrappers简介 对有状态连接的特定服务进行安全检测并实现访问控制,它以库文件形式实现,某进程是否接受libwrap的控制取决于发起此进程的程序在编译时是否针对libwrap进行编译的 ...
- mybatis使用@Insert @SelectKey 执行插入语句时获得主键自增长值(转)
@Insert(" insert into table(c1,c2) " + " values (#{c1},#{c2}) ") @SelectKey(resu ...
- centos 6.5 解压 zip
只查看 zip 文件内容而不解压 unzip -l filename.zip 解压到指定目录(不指定则为当前目录) unzip filename.zip -d /usr/file 压缩文件或目录为 z ...
- 处理springboot OTS parsing error: Failed to convert WOFF 2.0 font to SFNT
springboot项目中添加了字体等文件后,页面无法识别,浏览器调试窗口报错如下: Failed to decode downloaded font: http://localhost:8080/f ...
- BZOJ 5418: [Noi2018]屠龙勇士 EXCRT+multiset
题解:求解形如 $A[i]ans\equiv b[i](mod$ $p[i])$ 的 $x$ 的最小正整数解. 考虑只有一个等式,那么可以直接化成 $exgcd$ 的形式:$A[i]ans+p[i]y ...
- 牛客训练41D最小相似度bfs
最小相似度 题目大意:对于位数相同的两个二进制串,SIM(A,B)为它们的相似度,也就是A^B中0的个数.现在给定一堆串,找出一个T使得max{SIM(S1,T),SIM(S2,T),......,S ...
- Spring Boot教程(四十)使用Flyway来管理数据库版本
在上面的使用JdbcTemplate一文中,主要通过spring提供的JdbcTemplate实现对用户表的增删改查操作.在实现这个例子的时候,我们事先在MySQL中创建了用户表.创建表的过程我们在实 ...
- 基于Redis的分布式锁安全性分析-转
基于Redis的分布式锁到底安全吗(上)? 2017-02-11 网上有关Redis分布式锁的文章可谓多如牛毛了,不信的话你可以拿关键词“Redis 分布式锁”随便到哪个搜索引擎上去搜索一下就知道了 ...
- C++入门经典-友元
1:在讲述类的内容时说明了隐藏数据成员的好处,但是有时类会允许一些特殊的函数直接读写其私有数据成员. 使用friend关键字可以使特定的函数或者别的类的所有成员函数对私有数据成员进行读写.这既可以保持 ...