Spark商业案例与性能调优实战100课》第3课:商业案例之通过RDD分析大数据电影点评系各种类型的最喜爱电影TopN及性能优化技巧
来源:互联网 发布:阿里云栖大会2016 编辑:程序博客网 时间:2024/05/17 08:24
Spark商业案例与性能调优实战100课》第3课:商业案例之通过RDD分析大数据电影点评系各种类型的最喜爱电影TopN及性能优化技
源代码
package com.dt.spark.coresimport org.apache.spark.{SparkConf, SparkContext}object Movie_Users_Analyzer { def main(args: Array[String]): Unit = { var masterUrl = "local[4]" var dataPath = "data/movielens/medium/" if (args.length > 0) { masterUrl = args(0) } else if (args.length > 1) { dataPath = args(1) } val sc = new SparkContext(new SparkConf().setMaster(masterUrl).setAppName("Movie_Users_Analyzer")) val usersRDD = sc.textFile(dataPath + "users.dat") val moviessRDD = sc.textFile(dataPath + "movies.dat") val occupationsRDD = sc.textFile(dataPath + "occupation.dat") val ratingsRDD = sc.textFile(dataPath + "ratings.dat") val usersBasic = usersRDD.map(_.split("::")).map { user => ( user(3), (user(0), user(1), user(2)) ) } val occupations = occupationsRDD.map(_.split("::")).map(job => (job(0), job(1))) val userInformation = usersBasic.join(occupations) userInformation.cache() for (elem <- userInformation.collect()) { println(elem) } val targetMoive = ratingsRDD.map(_.split("::")).map(x => (x(0), x(1))).filter(_._2.equals("1193")) val targetUsers = userInformation.map(x => (x._2._1._1, x._2)) val userInformationForSpecificMovie = targetMoive.join(targetUsers) for (elem <- userInformationForSpecificMovie.collect()) { println(elem) } //users.dat UserID::Gender::Age::Occupation::Zip-code //ratings.dat UserID::MovieID::Rating::Timestamp //Occupation 6: "doctor/health care" // movies.dat MovieID::Title::Genres val ratings = ratingsRDD.map(_.split("::")).map(x => (x(0), x(1), x(2))).cache() ratings.map(x => (x._2, (x._3.toInt, 1))) .reduceByKey((x, y) => (x._1 + y._1, x._2 + y._2)) // 总分,总人数 .map(x => (x._2._1.toDouble / x._2._2, x._1)) .sortByKey(false) .take(10) .foreach(println) //观看人数最多的电影 //ratings.dat UserID::MovieID::Rating::Timestamp ratings.map(x => (x._1, 1)).reduceByKey(_ + _).map(x => (x._2, x._1)).sortByKey(false) .take(10).foreach(print) //1,"users.dat":UserID::Gender::Age::OccupationID::Zip-code //2,"movies.dat":MovieID::Title::Genres val male = "M" val female = "F" //ratings.dat UserID::MovieID::Rating::Timestamp val genderRatings = ratings.map(x => (x._1, (x._1, x._2, x._3))).join( usersRDD.map(_.split("::")).map(x => (x(0), x(1)))).cache() genderRatings.take(10).foreach(println) val maleRatings = genderRatings.filter(x => x._2._2.equals("M")).map(x => x._2._1) val femaleRatings = genderRatings.filter(x => x._2._2.equals("F")) map (x => x._2._1) maleRatings.map(x => (x._2, (x._3.toInt, 1))) .reduceByKey((x, y) => (x._1 + y._1, x._2 + y._2)) // 总分,总人数 .map(x => (x._2._1.toDouble / x._2._2, x._1)) .sortByKey(false) .map(x => (x._2, x._1)) .take(10) .foreach(println) // femaleRatings.map(x => (x._2, (x._3.toInt, 1))) .reduceByKey((x, y) => (x._1 + y._1, x._2 + y._2)) // 总分,总人数 .map(x => (x._2._1.toDouble / x._2._2, x._1)) .sortByKey(false) .map(x => (x._2, x._1)) .take(10) .foreach(println) }}
0 0
- Spark商业案例与性能调优实战100课》第3课:商业案例之通过RDD分析大数据电影点评系各种类型的最喜爱电影TopN及性能优化技巧
- 《Spark商业案例与性能调优实战100课》第1课:商业案例之通过RDD实现分析大数据电影点评系统中电影的用户行为信息
- Spark商业案例与性能调优实战100课》第2课:商业案例之通过RDD实现分析大数据电影点评系统中电影流行度分析
- Spark商业案例与性能调优实战100课》第2课:商业案例之通过RDD实现分析大数据电影点评系统中电影流行度分析
- Spark商业案例与性能调优实战100课》第11课:商业案例之通过纯粹通过DataFrame分析大数据电影点评系仿QQ和微信、淘宝等用户群分析与实战
- 《Spark商业案例与性能调优实战100课》第6课:商业案例之通过Spark SQL实现大数据电影用户行为分析
- 《Spark商业案例与性能调优实战100课》第15课:商业案例之纯粹通过DataSet进行电商交互式分析系统中各种类型TopN分析实战详解
- 《Spark商业案例与性能调优实战100课》第9课:商业案例之通过Spark SQL 下两种不同方式实现口碑最佳和最热门电影比较
- <<《Spark商业案例与性能调优实战100课》第17课:商业案例之NBA篮球运动员大数据分析系统代码实战
- 《Spark商业案例与性能调优实战100课》第19课:商业案例之NBA篮球运动员大数据分析核心业务逻辑代码实战
- Spark商业案例与性能调优实战100课》第16课:商业案例之NBA篮球运动员大数据分析系统架构和实现思路
- 《Spark商业案例与性能调优实战100课》第13课:商业案例之纯粹通过DataSet进行电商交互式分析系统中特定时段段访问次数TopN
- Spark商业案例与性能调优实战100课》第20课:大数据性能调优的本质和Spark性能调优要点分析
- 《Spark商业案例与性能调优实战100课》第18课:商业案例之NBA篮球运动员大数据分析代码实战之核心基础数据项编写
- 《Spark商业案例与性能调优实战100课》第14课:商业案例之纯粹通过DataSet进行电商交互式分析系统中特定时段购买金额Top10 和访问次数增长Top10
- 《Spark商业案例与性能调优实战100课》第24课:彻底解密Shuffle是如何成为Spark性能杀手的及调优点思考
- 《Spark商业案例与性能调优实战100课》第27课:彻底解密Spark Shuffle令人费解的6大经典问题
- Spark商业案例与性能调优实战100课》第22课:Spark性能调优之使用更高性能算子及其源码剖析
- 堆与栈的区别
- 【BZOJ 2321】[BeiJing2011集训]星器 脑洞
- python数据类型(python cookbook读书笔记一)
- 机器学习中的特征——特征选择的方法以及注意点
- android services
- Spark商业案例与性能调优实战100课》第3课:商业案例之通过RDD分析大数据电影点评系各种类型的最喜爱电影TopN及性能优化技巧
- kali2.0 : msfpayload和msfencode的集成版msfvenom 使用简介
- 解决HttpServletResponse输出的中文乱码问题
- 配置apache禁止通过IP访问网站
- Ubuntu14.04+Python2+机器学习(一)
- node async
- spring boot jar 打版生产版本 配置文件问题
- 简单的服务端
- HCP Fiori sandbox 演示应用