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部电影. ...
随机推荐
- JSP+Servlet+DAO+Javabean模式小记-20171029
1.Servlet的doPost方法使用request.getParameter()接收网页传送的form表单数据时,必须使用name属性,而不能使用id. 2.这是最简单的MVC模式,其中M(mod ...
- Date 对象
JavaScript Date 对象 Date 对象 Date 对象用于处理日期与时间. 创建 Date 对象: new Date() 以下四种方法同样可以创建 Date 对象: var d = ne ...
- vmware centos 桥接和NAT的IP配置
先初始化VM, 桥接模式: [root@out network-scripts]# cat ifcfg-ens33 TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesP ...
- mysql 导入SQL文件报错
----MySQL导入数据的时候,总是报错,本地测试都没办法测试---- 导出SQL文件正常, 在导入SQL文件的时候, 报错-----大部分数据表导入成功, 个别的失败 在网上看到很多建议: 建议别 ...
- codeforces402B
Trees in a Row CodeForces - 402B The Queen of England has n trees growing in a row in her garden. At ...
- Jmeter设置成中文
首次启动Jmeter为中文 选择后即变为中文
- [CSP-S模拟测试]:联合权值·改(暴力)
题目传送门(内部题143) 输入格式 输入文件的第一行为三个整数$n,m,t$.其中$t$是数据类型. 接下来$m$行,每行两个正整数$u,v$,表示图中的一条边.数据保证不存在重边或自环的情况. ...
- 记一次zipkin和spring cloud bus冲突
问题表现spring boot 版本 2.0.6spring cloud 版本 Finchley.SR2 使用spring-cloud-starter-zipkin + 独立部署的zipkin 进行链 ...
- layui template list
//第一步:编写模版.你可以使用一个script标签存放模板,如: <script id="demo" type="text/html"> < ...
- vue——父组件调用子组件
<template> <div> child1 </div> </template> <script> export default { n ...