




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
輸入格式化接口的設(shè)計與實現(xiàn)1.掌握輸入格式化接口的設(shè)計思想
2.掌握輸入格式化接口的實現(xiàn)方式
3.掌握新舊API的實現(xiàn)區(qū)別1、輸入格式化接口的設(shè)計與實現(xiàn)
2、舊版API的InputFormat解析
3、新版API的InputFormat解析
InputFormat主要用于描述輸入數(shù)據(jù)的格式,它提供以下兩個功能。?數(shù)據(jù)切分:按照某個策略將輸入數(shù)據(jù)切分成若干個split,以便確定MapTask個數(shù)以及對應(yīng)的split。?為Mapper提供輸入數(shù)據(jù):給定某個split,能將其解析成一個個key/value對。同學(xué)們需要掌握Hadoop如何設(shè)計InputFormat接口,以及提供了哪些常用的InputFormat實現(xiàn)。輸入格式化接口的設(shè)計與實現(xiàn)舊版輸入格式化接口在舊版API中,InputFormat是一個接口,它包含兩種方法:1.InputSplit[]getSplits(JobConfjob,intnumSplits)throwsIOException;2.RecordReader<K,V>getRecordReader(InputSplitsplit,JobConfjob,Reporterreporter);getSplits方法主要完成數(shù)據(jù)切分的功能,它會嘗試著將輸入數(shù)據(jù)切分成numSplits個InputSplit。InputSplit有以下兩個特點。?邏輯分片:它只是在邏輯上對輸入數(shù)據(jù)進行分片,并不會在磁盤上將其切分成分片進行存儲。InputSplit只記錄了分片的元數(shù)據(jù)信息,比如起始位置、長度以及所在的節(jié)點列表等。?可序列化:在Hadoop中,對象序列化主要有兩個作用:進程間通信和永久存儲。此處,InputSplit支持序列化操作主要是為了進程間通信。作業(yè)被提交到JobTracker之前,Client會調(diào)用作業(yè)InputFormat中的getSplits函數(shù),并將得到的InputSplit序列化到文件中。這樣,當(dāng)作業(yè)提交到JobTracker端對作業(yè)初始化時,可直接讀取該文件,解析出所有InputSplit,并創(chuàng)建對應(yīng)的MapTask。舊版輸入格式化接口
前面分析了InputFormat接口的定義,接下來介紹系統(tǒng)自帶的各種InputFormat實現(xiàn)。為了方便用戶編寫MapReduce程序,Hadoop自帶了一些針對數(shù)據(jù)庫和文件的InputFormat實現(xiàn),具體如下圖所示。通常而言,用戶需要處理的數(shù)據(jù)均以文件形式存儲到HDFS上,所以我們重點針對文件的InputFormat實現(xiàn)進行討論。舊版輸入格式化接口
如上圖所示,所有基于文件的InputFormat實現(xiàn)的基類是FileInputFormat,并由此派出針對文本文件格式的TextInputFormat、KeyValueTextInputFormat和NLineInputFormat,針對二進制文件格式的SequenceFileInputFormat等。整個基于文件的InputFormat體系的設(shè)計思路是,由公共基類FileInputFormat采用統(tǒng)一的方法對各種輸入文件進行切分,比如按照某個固定大小等分,而由各個派生InputFormat自己提供機制將進一步解析InputSplit。對應(yīng)到具體的實現(xiàn)是,基類FileInputFormat提供getSplits實現(xiàn),而派生類提供getRecordReader實現(xiàn)。舊版輸入格式化接口
新版API的InputFormat類圖如下圖所示。新API與舊API比較,在形式上發(fā)生了較大變化,但仔細(xì)分析,發(fā)現(xiàn)僅僅是對之前的一些類進行了封裝。通過封裝,使接口的易用性和擴展性得以增強。此外,對于基類FileInputFormat,新版API中有一個值得注意的改動:InputSplit劃分算法不再考慮用戶設(shè)定的MapTask個數(shù),而用mapred.max.split.size(記為maxSize)代替,即InputSplit大小的計算公式變?yōu)椋簊plitSize=max{minSize,min{maxSize,blockSize}}新版輸入格式化接口新版輸入格式化接口【實例】輸入目錄下有三個文件file1、file2和file3,大小依次為1MB,32MB和250MB。若blockSize采用默認(rèn)值64MB,則不同minSize和goalSize下,file3切分結(jié)果如表所示(三種情況下,file1與file2切分結(jié)果相同,均為1個InputSplit)。結(jié)合表和公式可以知
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 無人機操控與航拍技術(shù)考核試卷
- 圖書館數(shù)字資源長期保存策略考核試卷
- 家電產(chǎn)品品質(zhì)監(jiān)控與質(zhì)量改進考核試卷
- 整年運輸合同范本
- 大板委托加工合同范本
- 修剪綠化直營合同范本
- 工地個人水電合同范本
- 小學(xué)生美術(shù)課件制作教學(xué)
- 名片合同范本
- 財務(wù)支出季度計劃工作的分解與執(zhí)行要點
- GB/T 18601-2009天然花崗石建筑板材
- 畢業(yè)設(shè)計論文-貝類脫殼機設(shè)計
- 八項規(guī)定學(xué)習(xí)課件
- 《工程電磁場》配套教學(xué)課件
- 《過零丁洋》公開課件
- 從生產(chǎn)工藝角度詳解磷酸鐵鋰
- 全套橋梁施工技術(shù)交底記錄
- 《教師職業(yè)道德》全書word版
- 城市定制型商業(yè)醫(yī)療保險(惠民保)知識圖譜
- GB∕T 3836.31-2021 爆炸性環(huán)境 第31部分:由防粉塵點燃外殼“t”保護的設(shè)備
- AMDAR資料的分析和應(yīng)用
評論
0/150
提交評論