大数据全系列 教程
1869个小节阅读:467.5k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
业务二:根据车流量监控表数据,找出
xxxxxxxxxx
package com.itbaizhan.core.example
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object FindTop5MonitorInfo {
def main(args: Array[String]): Unit = {
val conf: SparkConf = new SparkConf()
.setMaster("local[*]")
.setAppName("FindTop5MonitorInfo")
val sc = new SparkContext(conf)
//1.读取文件,并返回Rdd对象
val monitorInfos: RDD[String] = sc.textFile("data/core/monitor_flow_action")
//2030-07-14 0005 27430 鲁A17158 2030-07-14 14:39:48 194 2 05
//->(0005,1)
val top5Mointors: Array[String] = monitorInfos.map(line => {
(line.split("\t")(1), 1)
})
//.reduceByKey((v1,v2)=>{v1+v2})
//聚合加操作,简化如下
.reduceByKey(_ + _)
//按照聚合后的数据量排序(0005,98),降序排序
.sortBy(tp => {tp._2}, false)
.map(tp=>{tp._1})
//获取top5
.take(5)
//输出top5的卡口列表
top5Mointors.foreach(println)
/** 0001
0007
0005
0006
0002
*/
//找出这top5卡扣下通过所有车辆的信息
monitorInfos.filter(line=>{
//当前行日志中的卡口编号是否在top5中,存在则保留,反之不保留
top5Mointors.contains(line.split("\t")(1))
}).foreach(println)
sc.stop()
}
}