大数据全系列 教程
1869个小节阅读:466.7k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
原始数据data/core/group_data.txt
xxxxxxxxxx
class1 100
class2 90
class3 99
class1 99
class3 98
class1 80
class2 70
class3 60
class1 98
class2 88
class2 66
class3 70
分组排序后:
xxxxxxxxxx
class = class3 , score = 99
class = class3 , score = 98
class = class3 , score = 70
class = class1 , score = 100
class = class1 , score = 99
class = class1 , score = 98
class = class2 , score = 90
class = class2 , score = 88
class = class2 , score = 70
代码实现:
xxxxxxxxxx
package com.itbaizhan.core.example
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object GroupSortDemo {
def main(args: Array[String]): Unit = {
val conf: SparkConf = new SparkConf()
.setMaster("local[1]")//启动一个线程便于查看结果
.setAppName("GroupSortDemo")
val sc = new SparkContext(conf)
//读取文件
val lines: RDD[String] = sc.textFile("data/core/group_data.txt")
//转换line:String=>(cls:String,score:Int)
val pairInfos: RDD[(String, Int)] = lines.map(line => {
val array: Array[String] = line.split("\t")
(array(0), array(1).toInt)
})
//分组(cls:String,score:Int)=>(cls:String,iter)
pairInfos.groupByKey()
//(cls:String,iter)=>(cls:String,list) 并排序list中元素
.foreach(tp=>{
val key: String = tp._1
val list: List[Int] = tp._2.toList
//原生集合的排序
val sortedList: List[Int] = list.sortWith((v1, v2) => {
v1 > v2
})
//获取top3
if(sortedList.length>3){
//超过3个就去前三
for(i<- 0 until 3){
println(s"class = $key , score=${sortedList(i)}")
}
}else{
//不超过3个,则全取
for(score<- sortedList){
println(s"class = $key , score=$score")
}
}
})
sc.stop()
}
}