求学生最喜欢的老师topN两道题
来源:互联网 发布:linux vi 编辑模式 编辑:程序博客网 时间:2024/05/01 19:48
表:
http://bigdata.edu360.cn/laozhang
http://bigdata.edu360.cn/laozhang
一,求学生最喜欢的老师的topN
package
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf,SparkContext}
object FavTeacher {
defmain(args: Array[String]): Unit = {
//setMaster("local[*]") 指定master的本地模式,方便调试,[*]启动多个线程
val conf = new SparkConf().setAppName("FavTeacher").setMaster("local[*]")
valsc = new SparkContext(conf)
//指定以后从哪里读取数据
val lines: RDD[String] = sc.textFile(args(0))
//将url切分,取出老师,将老师名称和一放到一个元组中
val teacherAndOne:RDD[(String, Int)] = lines.map(line => {
val index =line.lastIndexOf("/")
val teacher = line.substring(index + 1)
(teacher, 1)
})
//聚合
val reduced = teacherAndOne.reduceByKey(_+_)
//排序
val sorted = reduced.sortBy(_._2, false)
//取出前两名
val top2: Array[(String, Int)] = sorted.take(2)
println(top2.toBuffer)
sc.stop()
}
}
二、求学生最喜欢的每门功课的topN
package
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf,SparkContext}
object FavTeacher1 {
defmain(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("FavTeacher").setMaster("local[*]")
valsc = new SparkContext(conf)
val lines: RDD[String] = sc.textFile(args(0))
//将url切分,取出老师,将老师名称和一放到一个元组中
val subjectTeacherAndOne: RDD[((String,String), Int)] = lines.map(line => {
val index =line.lastIndexOf("/")
val subUrl = line.substring(0, index)
val subIndex =subUrl.lastIndexOf("/")
val subject = subUrl.substring(subIndex +1)
val teacher = line.substring(index + 1)
((subject, teacher), 1)
})
val reduced:RDD[((String, String), Int)] =subjectTeacherAndOne.reduceByKey(_+_)
val grouped: RDD[(String, Iterable[((String, String), Int)])] =reduced.groupBy(_._1._1)
//二次排序
// val result: RDD[(String, List[((String, String), Int)])] =grouped.mapValues(it => {
// it.toList.sortBy(_._2).reverse.take(2)
// })
//获取迭代器,一个迭代器就一个学科老师信息的集合
val values: RDD[Iterable[((String, String), Int)]] = grouped.values
//map一次就拿到一个学科
val result = values.map(it => {
it.toList.sortBy(_._2).reverse.take(1)(0)
})
val arr = result.collect()
println(arr.toBuffer)
sc.stop()
}
}
- 求学生最喜欢的老师topN两道题
- 求的数组的topN
- 学生时代最喜欢的球星
- 前言---我最喜欢的宣老师语录
- Storm的常见模式---求TOPN
- 大数据求TopN的优化算法
- 老师&&学生
- 王老师送学生的40句话
- 学生给老师的一道思考题
- 记成为csdn学生大本营的老师
- 蒙卦 老师和学生的智慧
- 当老师帮学生作弊的时候
- 学生写给老师的一封邮件
- 求公司人最喜欢的前K种水果
- Hadoop 案例6-----TopN问题:求最大的K个值并排序
- hive 分组+组内排序 , 求topN
- hive 分组+组内排序 , 求topN
- 学生与老师
- ubutun下安装visual studio code
- 常用命令讲解——linux使用教程(二)
- dubbo通过注解方式暴露服务和引用服务
- 传输层协议——TCP协议
- VS2015 Visual Assist X破解
- 求学生最喜欢的老师topN两道题
- Java中IO流,输入输出流概述与总结
- bootstrap-switch开关组件
- js 常用正则验证功能实现
- 技术与技术人员的价值
- scrapy 简单爬取知乎
- 请求乱码-----响应编码解决
- 使用进程池规避Python的GIL限制
- Python-递推构造列表和字典