小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 HK123COM 2019-02-14

目錄

 

正文

前言

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

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

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

Mapper階段

從map輸出到環(huán)形緩沖區(qū)的數(shù)據(jù)會被排序(這是MR框架中改良的快速排序),這個(gè)排序涉及partition和key,當(dāng)緩沖區(qū)容量占用80%,會spill數(shù)據(jù)到磁盤,生成IFile文件,Map結(jié)束后,會將IFile文件排序合并成一個(gè)大文件(基于堆實(shí)現(xiàn)的優(yōu)先級隊(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)的迭代器,并不斷的移動迭代器,以將key相同的數(shù)據(jù)順次交給reduce()函數(shù)處理,期間移動迭代器的過程實(shí)際上就是不斷調(diào)整小頂堆的過程(建堆→取堆頂元素→重新建堆→取堆頂元素...),這樣,sort和reduce可以并行進(jìn)行。

分組Top N分析

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

場景模擬

復(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é)生成績最高的學(xué)生的信息:課程,姓名和平均分

第一題

CourseScoreMR1.java

View Code

第二題

CourseScoreMR2.java

View Code

CSPartitioner.java

View Code

 第三題

CourseScoreMR3.java

View Code

CourseScoreGC.java

View Code

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多