国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SparkCore對學生成績的統(tǒng)計案例

這篇具有很好參考價值的文章主要介紹了SparkCore對學生成績的統(tǒng)計案例。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

SparkCore對學生成績的統(tǒng)計案例

1需求分析:

根據(jù)數(shù)據(jù)文件對數(shù)據(jù)進行分析,完成如下功能:

(1)查詢學生成績表中的前5名;

(2)輸出單科成績?yōu)?00分的學生ID;

(3)輸出每位學生所有科目的總成績。

2數(shù)據(jù)源(bigdata.txt,math.txt,student.txt)

#bigdata.txt
1001	大數(shù)據(jù)基礎	90
1002	大數(shù)據(jù)基礎	94
1003	大數(shù)據(jù)基礎	100
1004	大數(shù)據(jù)基礎	99
1005	大數(shù)據(jù)基礎	90
1006	大數(shù)據(jù)基礎	94
1007	大數(shù)據(jù)基礎	100
1008	大數(shù)據(jù)基礎	93
1009	大數(shù)據(jù)基礎	89
1010	大數(shù)據(jù)基礎	78
1011	大數(shù)據(jù)基礎	91
1012	大數(shù)據(jù)基礎	84
#math.txt
1001	應用數(shù)學	96
1002	應用數(shù)學	94
1003	應用數(shù)學	100
1004	應用數(shù)學	100
1005	應用數(shù)學	94
1006	應用數(shù)學	80
1007	應用數(shù)學	90
1008	應用數(shù)學	94
1009	應用數(shù)學	84
1010	應用數(shù)學	86
1011	應用數(shù)學	79
1012	應用數(shù)學	91

#student.txt
1001	李正明
1002	王一磊
1003	陳志華
1004	張永麗
1005	趙信
1006	古明遠
1007	劉浩明
1008	沈彬
1009	李子琪
1010	王嘉棟
1011	柳夢文
1012	錢多多

3代碼實現(xiàn)

(1)查詢學生成績表中的前5名;這里指的是單科成績哈,所以就沒有合并math和data,分開求的各自排名

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

//我們的目的是取出學生成績表中的前五名
object Top5_student_grade {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local").setAppName("grade")
    val sc = new SparkContext(sparkConf)
    //textFile中傳入數(shù)據(jù)源,可以是相對路徑或者絕對路徑
    val bigdata: RDD[String] = sc.textFile("spark_core\\src\\main\\java\\data\\result_bigdata.txt")
    //獲取每個數(shù)據(jù)值
    val bigdataMap: RDD[(String, String, String)] = bigdata.map(
      x => {
        var line = x.split("\t")
        (line(0), line(1), line(2))
      }
    )
    bigdataMap.sortBy(x=>x._3).take(5).foreach(println)

    sc.stop()
  }

}

結(jié)果為:
SparkCore對學生成績的統(tǒng)計案例


(2)輸出單科成績?yōu)?00分的學生ID;

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
//輸出單科成績?yōu)?00分的學生ID;目的是輸出學生ID,分數(shù)100
object grade_100_studentId {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local").setAppName("grade_100")
    val sc = new SparkContext(sparkConf)
    //讀取大數(shù)據(jù)成績表
    val bigdata: RDD[String] = sc.textFile("spark_core\\src\\main\\java\\data\\result_bigdata.txt")
    //獲取每個數(shù)據(jù)值
    val bigdataMap: RDD[(String, String, Int)] = bigdata.map(
      x => {
        var line = x.split("\t")
        (line(0), line(1), line(2).toInt)
      }
    )
    //讀取數(shù)學成績表
    val math: RDD[String] = sc.textFile("spark_core\\src\\main\\java\\data\\result_math.txt")
    //獲取每個數(shù)據(jù)值
    val mathMap: RDD[(String, String, Int)] = math.map(
      x => {
        var line = x.split("\t")
        (line(0), line(1), line(2).toInt)
      }
    )
    //分別過濾出成績?yōu)?00分的學生
    val bigdataFilter = bigdataMap.filter(x => x._3 == 100).map(_._1)
    //打印一下大數(shù)據(jù)成績?yōu)?00的學生ID
    bigdataFilter.collect().foreach(println)
    //打印一下數(shù)學成績?yōu)?00的學生ID
    val mathFilter = mathMap.filter(x => x._3 == 100).map(_._1)
    mathFilter.collect().foreach(println)
    //取出單科成績?yōu)?00的學生ID,只需要成績100的都拿出來,取出重復的(因為有人太厲害了,數(shù)學和大數(shù)據(jù)都是100分)
    val res: RDD[String] = bigdataFilter.union(mathFilter).distinct()
    res.collect().foreach(println)
  }
}

結(jié)果為:
SparkCore對學生成績的統(tǒng)計案例


(3)輸出每位學生所有科目的總成績。輸出學生ID和總成績

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD

object student_totalGrade {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local").setAppName("grade_100")
    val sc = new SparkContext(sparkConf)
    //讀取大數(shù)據(jù)成績表
    val bigdata: RDD[String] = sc.textFile("spark_core\\src\\main\\java\\data\\result_bigdata.txt")
    //獲取每個數(shù)據(jù)值
    val bigdataMap: RDD[(String, Int)] = bigdata.map(
      x => {
        var line = x.split("\t")
        (line(0), line(2).toInt)
      }
    )
    //讀取數(shù)學成績表
    val math: RDD[String] = sc.textFile("spark_core\\src\\main\\java\\data\\result_math.txt")
    //獲取每個數(shù)據(jù)值
    val mathMap: RDD[(String, Int)] = math.map(
      x => {
        var line = x.split("\t")
        (line(0), line(2).toInt)
      }
    )
    //reduceByKey相同key,即找到相同“student_ID”,去把他們對應的成績相加,reduce你就把它當成sum求多個數(shù)值的和即可
    val res: RDD[(String, Int)] = bigdataMap.union(mathMap).reduceByKey(_ + _)
    res.collect().foreach(println)
  }

}


結(jié)果為:

SparkCore對學生成績的統(tǒng)計案例


解題方法很多種,?可參考此博主的分析:https://blog.csdn.net/xiexianyou666/article/details/105766726

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????文章來源地址http://www.zghlxwxcb.cn/news/detail-419581.html

到了這里,關(guān)于SparkCore對學生成績的統(tǒng)計案例的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包