1、统计在春季赛中LPL,击杀次数最多5支队伍----显示队伍的名称、以及队伍击杀数
2、统计在整个赛年,死亡次数最多5支队伍------显示队伍的名称、以及队伍死亡次数
3、统计在春季赛中,LCK赛区ban选英雄前五是英雄名,以及ban选的次数(ban pick)
4、统计在春季赛中,LPL赛区ban选英雄前五是英雄名,以及ban选的次数(ban pick)
5、分别统计春季赛和夏季赛中,LPL赛区,胜场次数的最多的三只队伍
6、统计在整个赛年中获取5杀队伍次数最多的2支队伍
7、统计在整个赛年中胜率超过6成的,排名前三队伍
8、统计在春季赛中,red方的胜率,以及夏季赛中Blue方的胜率
9、统计在春季赛中,LPL赛区参赛场次最多的两支队伍
10、简单对文件进行数据去重工作。
package org.JLNU
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object LolSpark {
def main(args:Array[String]): Unit = {
val conf: SparkConf = new SparkConf().setAppName("lol").setMaster("local[*]")
val sc:SparkContext = new SparkContext(conf)
val textFile: RDD[String]= sc.textFile("D:\\spark-local-data\\input\\lol.txt")
val sum1 = textFile.filter(!_.contains("agt")).filter(_.contains("Spring")).filter(_.contains("LPL")).map(x=>{
val arrs = x.split("\t")
(arrs(9),arrs(17).toInt)
}).reduceByKey((_+_) ).sortBy(_._2,false).take(5)
val sum2 = textFile.filter(!_.contains("agt")).map(x=>{
val arrs = x.split("\t")
(arrs(9),arrs(18).toInt)
}).reduceByKey((_+_) ).sortBy(_._2,false).take(5)
val sum3 = textFile.filter(!_.contains("agt")).filter(_.contains("Spring")).filter(_.contains("LCK")).map(x => {
val array = x.split("\t")
array(10)+","+array(11)+","+array(12)+","+array(13)+","+array(14)
}).flatMap(_.split(",")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).take(5)
val sum4 = textFile.filter(!_.contains("agt")).filter(_.contains("Spring")).filter(_.contains("LPL")).map(x => {
val array = x.split("\t")
array(10)+","+array(11)+","+array(12)+","+array(13)+","+array(14)
}).flatMap(_.split(",")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).take(5)
sum4.foreach(println)
val sum51=textFile.filter(!_.contains("agt")).filter(_.contains("Spring")).filter(_.contains("LPL")).map(x => {
val array = x.split("\t")
(array(9),array(16).toInt)
}).reduceByKey(_+_).sortBy(_._2,false).take(3)
val sum52=textFile.filter(!_.contains("agt")).filter(_.contains("Summer")).filter(_.contains("LPL")).map(x => {
val array = x.split("\t")
(array(9),array(16).toInt)
}).reduceByKey(_+_).sortBy(_._2,false).take(3)
val sum6 = textFile.filter(!_.contains("agt")).map(x=>{
val arrs = x.split("\t")
(arrs(9),arrs(23).toInt)
} ).reduceByKey((_+_) ).sortBy(_._2,false).take(2)
val sum7 = textFile.filter(!_.contains("agt")).map(x => {
val array = x.split("\t")
(array(9), 1)
}).reduceByKey((_ + _))
val win = textFile.filter(!_.contains("agt")).filter(x => {
val arrs = x.split("\t")
arrs(16).toInt == 1
}).map(x => {
val array = x.split("\t")
(array(9), 1)
}).reduceByKey((_ + _))
val takeThree0 = win.join(sum7).map(x=>{
(x._1,100*x._2._1/x._2._2)
}).filter(x=>{
x._2>=60
}).sortBy(_._2,false).map(x=>{
x._1+" : "+x._2+"%"
}).take(3)
val sum81 = textFile.filter(!_.contains("agt")).filter(_.contains("Spring")).filter( _.contains("Red")).map(x=>{
val arrs=x.split("\t")
(arrs(8),1)
} ).reduceByKey((_+_))
val win1 = textFile.filter(!_.contains("agt")).filter(_.contains("Spring")).filter(_.contains("Red")).filter(x=>{
val arrs = x.split("\t")
arrs(16).toInt==1
}).map(x=>{
val arrs=x.split("\t")
(arrs(8),1)
}).reduceByKey((_+_))
val takeThree1 = win1.join(sum81).map(x=>{
(x._1,100*x._2._1/x._2._2+"%")
}).take(1)
val sum82 = textFile.filter(!_.contains("agt")).filter(_.contains("Summer")).filter( _.contains("Blue")).map(x=>{
val arrs = x.split("\t")
(arrs(8),1)
} ).reduceByKey((_+_))
val win2 = textFile.filter(!_.contains("agt")).filter(_.contains("Summer")).filter(_.contains("Blue")).filter(x=>{
val arrs = x.split("\t")
arrs(16).toInt==1
}).map(x=>{
val arrs=x.split("\t")
(arrs(8),1)
}).reduceByKey((_+_))
val takeThree2 = win2.join(sum82).map(x=>{
(x._1,100*x._2._1/x._2._2+"%")
}).take(1)
val sum9 = textFile.filter(!_.contains("agt")).filter(_.contains("Spring")).filter(_.contains("LPL")).map(x=>{
val arrs = x.split("\t")
(arrs( 9),1)
}).reduceByKey((_+_) ).sortBy(_._2,false).take(2)
val sum10 = textFile.filter(!_.contains("agt")).filter(_.contains("Spring")).filter( _.contains("Red")).filter( _.contains("LPL")).map(x=>{
val arrs=x.split("\t")
("红队首杀总数:",arrs(24).toInt)
} ).reduceByKey((_+_) ).take(1)
val sum11 = textFile.filter(!_.contains("agt")).filter(_.contains("Spring")).filter( _.contains("LPL")).map(x=>{
val arrs = x.split("\t")
(arrs(9),arrs(22).toInt)
} ).reduceByKey((_+_) ).sortBy(_._2,false).take( 3)
val sum12 = textFile.filter(!_.contains("agt")).map(x=>{
val arrs = x.split("\t")
(arrs( 9),arrs(24).toInt)
}).reduceByKey((_+_) )
val time = textFile.filter(!_.contains("agt")).map(x=>{
val arrs = x.split("\t")
(arrs( 9),arrs(15).toInt)
}).reduceByKey((_+_))
val take = sum12.join(time).map( x=> {
(x._1,x._2)
}).sortBy(_._2,false).map(x=>{
x._1 + " 游戏时长: " + x._2
}).take(3)
val team = textFile.filter(!_.contains("agt")).map(x=>{
val arrs = x.split("\t")
(arrs(9),1)
}).reduceByKey((_+_) ).sortBy(_._2,false).take( 1)
val tem = team(0)._1
val killsum = textFile.filter(!_.contains("agt")).filter(_.contains(tem)).map(x=>{
val arrs = x.split("\t")
(arrs( 9),arrs(17).toInt)
}).reduceByKey((_+_))
val deathsum = textFile.filter(!_.contains("agt")).filter(_.contains(tem)).map(x=>{
val arrs = x.split("\t")
(arrs( 9),arrs(18).toInt)
}).reduceByKey((_+_))
val sum13 = killsum.join(deathsum).map(x=>{
(x._1,(x._2._1 * 1.0)/(x._2._2 * 1.0))
}).take(1)
val sum14 = textFile.filter(!_.contains("agt")).filter(_.contains("Spring")).filter(_.contains("LCK")).map(x=>{
val arrs = x.split("\t")
(arrs(9),arrs(18).toInt)
}).reduceByKey((_+_) ).sortBy(_._2,false).take( 2)
Thread.sleep(500)
println("======================")
println("1、统计在春季赛中LPL,击杀次数最多5支队伍")
sum1.foreach(println)
println("======================")
println("2、统计在整个赛年,死亡次数最多5支队伍")
sum2.foreach(println)
println("======================")
println("3、统计在春季赛中,LCK赛区ban选英雄前五是英雄名,以及ban选的次数(ban pick)")
sum3.foreach(println)
println("======================")
println("4、统计在春季赛中,LPL赛区ban选英雄前五是英雄名,以及ban选的次数(ban pick)")
sum4.foreach(println)
println("======================")
println("5.1、统计春季赛中,LPL赛区,胜场次数的最多的三只队伍")
sum51.foreach(println)
println("======================")
println("5.2、统计夏季赛中,LPL赛区,胜场次数的最多的三只队伍")
sum52.foreach(println)
println("======================")
println("6、整个赛年中,五杀最多的2支队伍")
sum6.foreach(println)
println("======================")
println("7、统计在整个赛年中省略超过6成的,排名前三队伍")
takeThree0.foreach(println)
println("======================")
println("8.1、春季赛中Red方的胜率")
takeThree1.foreach(println)
println("======================")
println("8.2、夏季赛中Blue方的胜率")
takeThree2.foreach(println)
println("======================")
println("9、春季赛中LPL赛区参赛场次最多的两只队伍")
sum9.foreach(println)
println("======================")
println("10、红队春季赛LPl赛区,首杀总数")
sum10.foreach(println)
println("======================")
println("11、春季赛LPL赛区,四杀最多的三支队伍 ")
sum11.foreach(println)
println("======================")
println("12、统计首杀次数最多的队伍前三名的总游戏时间")
take.foreach(println)
println("======================")
println("13、计算总参赛次数最多的队伍的总KD比")
sum13.foreach(println)
println("======================")
println("14、统计在春季赛中LCK,死亡次数最多的2支队伍")
sum14.foreach(println)
println("======================")
sc.textFile("D:\\study\\idealU\\inputdata\\lol.txt").distinct().repartition(1).saveAsTextFile("D:\\study\\idealU\\outputdata\\out10")
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2021-05-13 Mysql select练习