乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Hadoop學(xué)習(xí)之路(二十)MapReduce求TopN

       HK123COM 2019-02-14

      目錄

       

      正文

      前言

      在Hadoop中,排序是MapReduce的靈魂,MapTask和ReduceTask均會(huì)對(duì)數(shù)據(jù)按Key排序,這個(gè)操作是MR框架的默認(rèn)行為,不管你的業(yè)務(wù)邏輯上是否需要這一操作。

      技術(shù)點(diǎn)

      MapReduce框架中,用到的排序主要有兩種:快速排序和基于堆實(shí)現(xiàn)的優(yōu)先級(jí)隊(duì)列(PriorityQueue)。

      Mapper階段

      從map輸出到環(huán)形緩沖區(qū)的數(shù)據(jù)會(huì)被排序(這是MR框架中改良的快速排序),這個(gè)排序涉及partition和key,當(dāng)緩沖區(qū)容量占用80%,會(huì)spill數(shù)據(jù)到磁盤,生成IFile文件,Map結(jié)束后,會(huì)將IFile文件排序合并成一個(gè)大文件(基于堆實(shí)現(xiàn)的優(yōu)先級(jí)隊(duì)列),以供不同的reduce來拉取相應(yīng)的數(shù)據(jù)。

      Reducer階段 

      從Mapper端取回的數(shù)據(jù)已是部分有序,Reduce Task只需進(jìn)行一次歸并排序即可保證數(shù)據(jù)整體有序。為了提高效率,Hadoop將sort階段和reduce階段并行化,在sort階段,Reduce Task為內(nèi)存和磁盤中的文件建立了小頂堆,保存了指向該小頂堆根節(jié)點(diǎn)的迭代器,并不斷的移動(dòng)迭代器,以將key相同的數(shù)據(jù)順次交給reduce()函數(shù)處理,期間移動(dòng)迭代器的過程實(shí)際上就是不斷調(diào)整小頂堆的過程(建堆→取堆頂元素→重新建堆→取堆頂元素...),這樣,sort和reduce可以并行進(jìn)行。

      分組Top N分析

      在數(shù)據(jù)處理中,經(jīng)常會(huì)碰到這樣一個(gè)場(chǎng)景,對(duì)表數(shù)據(jù)按照某一字段分組,然后找出各自組內(nèi)最大的幾條記錄情形。針對(duì)這種分組Top N問題,我們利用Hive、MapReduce等多種工具實(shí)現(xiàn)一下。

      場(chǎng)景模擬

      復(fù)制代碼
      computer,huangxiaoming,85,86,41,75,93,42,85
      computer,xuzheng,54,52,86,91,42
      computer,huangbo,85,42,96,38
      english,zhaobenshan,54,52,86,91,42,85,75
      english,liuyifei,85,41,75,21,85,96,14
      algorithm,liuyifei,75,85,62,48,54,96,15
      computer,huangjiaju,85,75,86,85,85
      english,liuyifei,76,95,86,74,68,74,48
      english,huangdatou,48,58,67,86,15,33,85
      algorithm,huanglei,76,95,86,74,68,74,48
      algorithm,huangjiaju,85,75,86,85,85,74,86
      computer,huangdatou,48,58,67,86,15,33,85
      english,zhouqi,85,86,41,75,93,42,85,75,55,47,22
      english,huangbo,85,42,96,38,55,47,22
      algorithm,liutao,85,75,85,99,66
      computer,huangzitao,85,86,41,75,93,42,85
      math,wangbaoqiang,85,86,41,75,93,42,85
      computer,liujialing,85,41,75,21,85,96,14,74,86
      computer,liuyifei,75,85,62,48,54,96,15
      computer,liutao,85,75,85,99,66,88,75,91
      computer,huanglei,76,95,86,74,68,74,48
      english,liujialing,75,85,62,48,54,96,15
      math,huanglei,76,95,86,74,68,74,48
      math,huangjiaju,85,75,86,85,85,74,86
      math,liutao,48,58,67,86,15,33,85
      english,huanglei,85,75,85,99,66,88,75,91
      math,xuzheng,54,52,86,91,42,85,75
      math,huangxiaoming,85,75,85,99,66,88,75,91
      math,liujialing,85,86,41,75,93,42,85,75
      english,huangxiaoming,85,86,41,75,93,42,85
      algorithm,huangdatou,48,58,67,86,15,33,85
      algorithm,huangzitao,85,86,41,75,93,42,85,75
      復(fù)制代碼

       一、數(shù)據(jù)解釋

      數(shù)據(jù)字段個(gè)數(shù)不固定:
      第一個(gè)是課程名稱,總共四個(gè)課程,computer,math,english,algorithm,
      第二個(gè)是學(xué)生姓名,后面是每次考試的分?jǐn)?shù)

      二、統(tǒng)計(jì)需求:
      1、統(tǒng)計(jì)每門課程的參考人數(shù)和課程平均分

      2、統(tǒng)計(jì)每門課程參考學(xué)生的平均分,并且按課程存入不同的結(jié)果文件,要求一門課程一個(gè)結(jié)果文件,并且按平均分從高到低排序,分?jǐn)?shù)保留一位小數(shù)

      3、求出每門課程參考學(xué)生成績(jī)最高的學(xué)生的信息:課程,姓名和平均分

      第一題

      CourseScoreMR1.java

      View Code

      第二題

      CourseScoreMR2.java

      View Code

      CSPartitioner.java

      View Code

       第三題

      CourseScoreMR3.java

      View Code

      CourseScoreGC.java

      View Code

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多