MapReduce簡單練習(xí)

搭好了Hadoop環(huán)境,編寫了個(gè)簡單的WordCount程序,接下來,寫幾個(gè)MapReduce程序,看看MapReduce編程究竟怎么個(gè)用法

案例1 廣告數(shù)據(jù)統(tǒng)計(jì)

數(shù)據(jù)格式:

11  xiaoming    1   20171224
11  xiaofang    1   20171224
11  xiaofang    2   20171224
11  xiaoshan    1   20171224
11  xiaoli  1   20171224
12  zhangsan    1   20171224
12  lisi    1   20171224
31  wangwu  1   20171224
31  mazi    1   20171224
12  daming  1   20171224
11  xiaoming    1   20171224
11  xiaofang    1   20171224
11  xiaofang    2   20171224
11  xiaoshan    1   20171224
11  xiaoli  1   20171224
12  zhangsan    1   20171224
12  wangwang    1   20171224
31  xuebing 1   20171224

地域編碼+用戶編號+瀏覽類型+日期

名詞解釋:
  • 廣告曝光量:廣告被瀏覽的次數(shù)(PV即Page View)
  • 廣告點(diǎn)擊量:廣告被點(diǎn)擊的次數(shù),常用click表示
  • 廣告點(diǎn)擊率:廣告點(diǎn)擊量/廣告曝光量
需求一:按天統(tǒng)計(jì)曝光量,按照曝光量升序和降序排列
  • 簡單分析:需要實(shí)現(xiàn)兩個(gè)作業(yè):統(tǒng)計(jì)曝光量、排序
  • 其中排序需依賴統(tǒng)計(jì)結(jié)果,升序可直接依賴MapReduce框架的Shuffle進(jìn)行,降序需要重寫比較器
    代碼就不直接粘貼了,具體看github代碼,本例類為com.nanri.mapr01.AdStat
  • 編譯,打包,上傳到集群,使用命令運(yùn)行就不多作介紹,與wordcount類似
需求二:對前一天產(chǎn)生的數(shù)據(jù)按地區(qū)統(tǒng)計(jì)曝光量、點(diǎn)擊量、點(diǎn)擊率
  • 簡單分析:本需求需要實(shí)現(xiàn)統(tǒng)計(jì)多個(gè)變量,可以自定義一個(gè)實(shí)體類來存放這些變量,此為本例的練習(xí)點(diǎn),代碼見上述github,本例類為com.nari.adstat.MrPvClickByAreaDayApp
需求三:一批評分?jǐn)?shù)據(jù),數(shù)據(jù)樣本如下
xiaoming    18  female  50

姓名 + 年齡 + 性別 + 評分

  • 需求:找出不同性別不同年齡段用戶對某個(gè)產(chǎn)品的最高打分
  • 簡單分析:本例練習(xí)點(diǎn)為自定義partition,用性別作為key,只會分為兩個(gè)reduce執(zhí)行,不符合要求,自定義partition,再按照年齡進(jìn)行分區(qū),這樣每個(gè)年齡段的不同性別分為不同的reduce分別計(jì)算,滿足要求
  • 本例為com.nari.adstat.partition.ScoreStatByAgeGenderApp

在MapReduce執(zhí)行也可以設(shè)置一些參數(shù)來優(yōu)化任務(wù)效果

  • Map Task重試次數(shù)mapreduce.map.maxattempts
  • Reduce Task重試次數(shù)mapreduce.reduce.maxattempts
  • 是否打開Map階段的推測執(zhí)行機(jī)制,默認(rèn)為Truemapreduce.map.speculative
  • 是否打開Reduce階段的推測執(zhí)行機(jī)制,默認(rèn)為Truemapreduce.reduce.speculative
  • 調(diào)整一個(gè)分片的最小數(shù)據(jù)量mapreduce.input.fileinputformat.split.minsize
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容