版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Map和Reduce函數(shù)2學(xué)習(xí)任務(wù)初步了解MapReduce框架初步探索Mapper和Reduce函數(shù)3知識(shí)目標(biāo)什么是MapReduce模型Mapper函數(shù)與Reduce函數(shù)的關(guān)系01能力目標(biāo)了解MapReduce模型了解Mapper函數(shù)與Reduce函數(shù)02學(xué)習(xí)目標(biāo)4目錄01MapReduce原理02Mapper函數(shù)介紹03Reduce函數(shù)介紹5MapReduce原理MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算。概念"Map(映射)"和"Reduce(歸約)",是它們的主要思想,都是從函數(shù)式編程語言里借來的,還有從矢量編程語言里借來的特性。它極大地方便了編程人員在不會(huì)分布式并行編程的情況下,將自己的程序運(yùn)行在分布式系統(tǒng)上。當(dāng)前的軟件實(shí)現(xiàn)是指定一個(gè)Map(映射)函數(shù),用來把一組鍵值對(duì)映射成一組新的鍵值對(duì),指定并發(fā)的Reduce(歸約)函數(shù),用來保證所有映射的鍵值對(duì)中的每一個(gè)共享相同的鍵組。6MapReduce原理Map先從HDFS上讀取不同的文件,然后對(duì)其進(jìn)行map操作,生成一個(gè)個(gè)帶有標(biāo)簽的數(shù)據(jù)塊;帶有相同標(biāo)簽(key)的數(shù)據(jù)塊,會(huì)被分配到同一個(gè)Reduce上進(jìn)行操作,從而得到最終結(jié)果,并將最終結(jié)果寫回HDFS。7MapReduce原理輸入文件使一串字符串,是不自帶分區(qū)的文件,而是文本文件,所以多了一個(gè)拆分的步驟。隨后來對(duì)分割的文本進(jìn)行Map階段的操作,其分發(fā)的標(biāo)簽(key)是單詞本身,分發(fā)的內(nèi)容是每一段文本里出現(xiàn)該單詞的數(shù)量。接下來會(huì)進(jìn)行一個(gè)分發(fā)操作,即相同標(biāo)簽(key)的數(shù)據(jù)會(huì)被收集到一起。Reduce對(duì)收集之后分配過來的數(shù)據(jù)進(jìn)行處理,最終結(jié)果匯總,就是單詞計(jì)數(shù)的結(jié)果。Wordcount執(zhí)行流程8MapReduce原理Wordcount執(zhí)行流程9Mappper函數(shù)介紹Mapper在執(zhí)行的過程中需傳入的四個(gè)參數(shù):輸入輸出類型為泛型。內(nèi)部實(shí)現(xiàn)首先聲明了類Context,傳遞了四個(gè)泛型,分別是輸入的key類型、輸入的value類型、輸出的key類型、輸出的value類型。Mapper函數(shù)定義了四個(gè)方法:setup:定義Map的啟動(dòng)工作,比如讀入一些配置、進(jìn)行一些變量的初始化等map:定義實(shí)際的mapper階段功能,比如數(shù)據(jù)讀入、處理、打標(biāo)簽、分發(fā)等cleanup:定義mapper階段之后收尾工作,比如多路輸出等。run:實(shí)際執(zhí)行程序的方法,先調(diào)用setup完成啟動(dòng)工作,然后調(diào)用map完成實(shí)際的mapper階段功能,在所有map工作都完成之后,調(diào)用cleanup完成收尾工作。Mapper函數(shù)的執(zhí)行流程10Mappper函數(shù)介紹Mapper函數(shù)的執(zhí)行流程publicclassMapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>{publicabstractclassContextimplementsMapContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT>{}setup(Contextcontext){}map(KEYINkey,VALUEINvalue,Contextcontext) {context.write((KEYOUT)key,(VALUEOUT)value);}cleanup(Contextcontext){}run(Contextcontext){setup(context);try{
map(context.getCurrentKey(),context.getCurrentValue().context);}finally{cleanup(context); }}}11Mappper函數(shù)介紹導(dǎo)入依賴包,java自帶IO異常包,MapReduce中的IO包,MapReduce中的Mapper包。Mapper函數(shù)的實(shí)現(xiàn)過程定義類,需要繼承Mapper類,并指明4個(gè)10泛型(key-in,value-in,key-out,value-out)。importjava,io.IOException;importorg.apache.hadoop.io,Text;importorg,apache.hadoop,mapreduce.Mapper;publicclassMiniTestMapperextendsMapper<Text,Text,Text,Text>{}定義兩個(gè)out變量:key-out、value-out。publicTextwrite_key=newText();publicTextwrite_value=newText();12Mappper函數(shù)介紹覆寫基類的map函數(shù),指明3個(gè)參數(shù)(key-in,value-in,context)。Mapper函數(shù)的實(shí)現(xiàn)過程設(shè)置map寫的(key,value)。@Overrideprotectedvoidmap(Textkey,Textvalue,Contextcontext) throwsIOException,InterruptedException{}write_key.set(key);write_value.set(value);使用context.write方法將結(jié)果寫到本地。context_write(write_key,write_value);13Reduce函數(shù)介紹Reduce在執(zhí)行的過程中需傳入的四個(gè)參數(shù):輸入輸出類型為泛型。內(nèi)部實(shí)現(xiàn)首先聲明了類Context,傳遞了四個(gè)泛型,分別是輸入的key類型、輸入的value類型、輸出的key類型、輸出的value類型。Reduce函數(shù)定義了四個(gè)方法:setup:定義Reduce的啟動(dòng)工作,比如讀入一些配置、進(jìn)行一些變量的初始化等reduce:定義實(shí)際的Reducer階段功能,比如數(shù)據(jù)讀入、處理、打標(biāo)簽、分發(fā)等cleanup:定義mapper階段之后收尾工作,比如多路輸出等。run:實(shí)際執(zhí)行程序的方法,先調(diào)用setup完成啟動(dòng)工作,然后調(diào)用reduce完成實(shí)際的Reducer階段功能,在所有reduce工作都完成之后,調(diào)用cleanup完成收尾工作。Reduce函數(shù)的執(zhí)行流程14Reduce函數(shù)介紹Reduce函數(shù)的執(zhí)行流程publicclassReduce{publicabstractclassContextimplementsReduceContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT>{}setup(Contextcontext){}
reduce(KEYINkey,VALUEINvalue,Contextcontext) {context.write((KEYOUT)key,(VALUEOUT)value);}cleanup(Contextcontext){}run(Contextcontext){setup(context);try{reduce(context.getCurrentKey(),context.getCurrentValue().context);}finally{cleanup(context); }}}15Reduce函數(shù)介紹導(dǎo)入依賴包,java自帶IO異常包,MapReduce中的IO包,MapReduce中的Mapper包。Reduce函數(shù)的實(shí)現(xiàn)過程定義類,需要繼承Mapper類,并指明4個(gè)10泛型(key-in,value-in,key-out,value-out)。importjava,io.IOException;importorg.apache.hadoop.io,Text;importorg,apache.hadoop,mapreduce.Mapper;publicclassMiniTestMapperextendsMapper<Text,Text,Text,Text>{}定義兩個(gè)out變量:key-out、value-out。publicTextwrite_key=newText();publicTextwrite_value=newText();16Reduce函數(shù)介紹覆寫基類的reduce函數(shù),指明3個(gè)參數(shù)(key-in,value-in,context)。Reduce函數(shù)的實(shí)現(xiàn)過程設(shè)置reduce寫的(key,value)。@Overrideprotectedvoidreduce(Textkey,Textvalue,Contextcontext) t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 深度學(xué)習(xí)模型訓(xùn)練與優(yōu)化實(shí)踐方法
- 輔警色盲測(cè)試題及答案
- 磷石膏生產(chǎn)線項(xiàng)目投標(biāo)書
- 幕墻鋼結(jié)構(gòu)臨時(shí)支撐系統(tǒng)設(shè)計(jì)方案
- 幕墻鋼結(jié)構(gòu)冬季施工技術(shù)方案
- 水滸傳考試題目及答案
- 數(shù)學(xué)期末試卷及答案
- 新能源技術(shù)操作與維護(hù)手冊(cè)(標(biāo)準(zhǔn)版)
- 企業(yè)供應(yīng)鏈管理操作規(guī)范與流程
- 2025年環(huán)保管理體系建立與運(yùn)行指南
- 船艇涂裝教學(xué)課件
- 招標(biāo)績效考核方案(3篇)
- 500萬的咨詢合同范本
- 2025年貸款房屋轉(zhuǎn)贈(zèng)協(xié)議書
- 2025天津市個(gè)人房屋租賃合同樣本
- 中藥熱熨敷技術(shù)及操作流程圖
- 鶴壁供熱管理辦法
- 01 華為采購管理架構(gòu)(20P)
- 糖尿病逆轉(zhuǎn)與綜合管理案例分享
- 工行信息安全管理辦法
- 娛樂場(chǎng)所安全管理規(guī)定與措施
評(píng)論
0/150
提交評(píng)論