![輸入分片與記錄課件_第1頁](http://file4.renrendoc.com/view/a42ce0d106bbd11e96552974c6308417/a42ce0d106bbd11e96552974c63084171.gif)
![輸入分片與記錄課件_第2頁](http://file4.renrendoc.com/view/a42ce0d106bbd11e96552974c6308417/a42ce0d106bbd11e96552974c63084172.gif)
![輸入分片與記錄課件_第3頁](http://file4.renrendoc.com/view/a42ce0d106bbd11e96552974c6308417/a42ce0d106bbd11e96552974c63084173.gif)
![輸入分片與記錄課件_第4頁](http://file4.renrendoc.com/view/a42ce0d106bbd11e96552974c6308417/a42ce0d106bbd11e96552974c63084174.gif)
![輸入分片與記錄課件_第5頁](http://file4.renrendoc.com/view/a42ce0d106bbd11e96552974c6308417/a42ce0d106bbd11e96552974c63084175.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、MapReduce的類型與格式夏瑞仙MapReduce數(shù)據(jù)處理模型非常簡單:map和reduce函數(shù)的輸入和輸出是鍵/值對(key/value pair)。本章深入討論MapReduce模型,重點介紹各種類型的數(shù)據(jù)(從簡單文本到結(jié)構(gòu)化的二進制對象)如何在MapReduce中使用引言目錄MapReduce的類型 默認的MapReduce作業(yè)輸入格式 輸入分片與記錄 文本輸入 二進制輸入 多種輸入 數(shù)據(jù)庫輸入(和輸出)輸出格式 文本輸出 二進制輸出 多個輸出 延遲輸出 數(shù)據(jù)庫輸出MapReduce的類型map:(K1,V1) list(K2,V2)reduce:(K2,list(V2) list(
2、K3,V3)一般來說,map函數(shù)輸入的鍵/值的類型(K1和V1)不同于輸出類型(K2和V2)reduce函數(shù)的輸入類型必須與map函數(shù)的輸出類型相同,但reduce函數(shù)的輸出類型可以不同于輸入類型MapReduce的類型map:(K1,V1) list(K2,V2)combine:(K2,list(V2) list(K2,V2)reduce:(K2,list(V2) list(K3,V3)combine函數(shù)與reduce函數(shù)通常是一樣的,在這種情況下,K3與K2類型相同,V3與V2類型相同MapReduce的類型partition:(K2,V2) integerpartition函數(shù)將中間的鍵
3、/值對(K2和V2)進行處理,并且返回一個分區(qū)索引。實際上分區(qū)單獨由鍵決定MapReduce的類型為什么不能結(jié)合mapper和reducer導出類型呢? 默認的MapReduce作業(yè)默認的輸入格式是TextInputFormat,它產(chǎn)生的鍵類型是LongWritable,值類型是Text(文本行)默認的mapper是IdentityMapper,它將輸入的鍵和值原封不動地寫到輸出中 IdentityMapper是一個泛型類型,它可以接受任何鍵或值的類型,只要map輸入和輸出鍵的類型相同,值的類型也相同就可以 默認的MapReduce作業(yè)默認的partitioner是HashPartitione
4、r,它對每條記錄的鍵進行哈希操作以決定該記錄應該屬于哪個分區(qū)。每個分區(qū)對應一個reducer任務 鍵的哈希碼被轉(zhuǎn)換為一個非負整數(shù),它由哈希值與最大的整型值做一次按位與操作而獲得,然后用分區(qū)數(shù)進行取模操作,來決定該記錄屬于哪個分區(qū)索引 默認的MapReduce作業(yè)默認的reducer是IdentityReducer,它也是一個泛型類型,它簡單的將所有的輸入寫到輸出中 大多數(shù)MapReduce程序不會一直用相同的鍵或值類型,所以就想上一節(jié)中描述的那樣,必須配置作業(yè)來聲明使用的類型 默認的Streaming作業(yè)必須提供一個mapper因為默認的輸入格式TextInputFormat產(chǎn)生的鍵類型是Lo
5、ngWritable,值類型是Text,而Streaming的輸出鍵和值(包括map的鍵和值)都是Text類型。默認的IdentityMapper無法將LongWritable類型的鍵轉(zhuǎn)換為Text類型的鍵Streaming中的鍵和值Streaming應用可以決定分隔符,該分隔符用于通過標準輸入把鍵/值對轉(zhuǎn)換為一串比特值發(fā)送到map或reduce函數(shù)。分隔符默認情況下是Tab(制表符),但如果鍵或值本身含有Tab,它能將分隔符修改成其他符號輸出鍵/值對時,也需要用一個可配置的分隔符來進行分割Streaming中的鍵和值輸入格式輸入格式輸入分片與記錄一個輸入分片(split)就是由單個map處理
6、的輸入塊每條記錄就是一個鍵/值對在數(shù)據(jù)庫的場景中,一個輸入分片對應于一個表上的若干行,而一條記錄對應到一行(DBInputFormat正是這么做的,它這種輸入格式用于從關系數(shù)據(jù)庫讀取數(shù)據(jù))。輸入格式輸入分片與記錄輸入分片(split)在Java中被表示為InputSplit接口InputSplit包含一個以字節(jié)為單位的長度和一組存儲位置(即一組主機名)輸入格式輸入分片與記錄InputSplit是由InputForamt創(chuàng)建的。InputForamt負責產(chǎn)生輸入分片并將它們分割成記錄。輸入格式FileInputFormat類FileInputFormat是所有使用文件作為其數(shù)據(jù)源的InputFo
7、rmat實現(xiàn)的基類提供了兩個功能:一個定義哪些文件包含在一個作業(yè)的輸入中,一個為輸入文件生成分片的實現(xiàn)。輸入格式FileInputFormat類的輸入路徑輸入格式FileInputFormat類的輸入路徑add和set方法允許指定包含的文件。如果需要排除特定文件,可以使用setInputPathFilter()方法設置一個過濾器即使不設置過濾器,也會使用一個默認的過濾器來排除隱藏文件(名稱中以.和_開頭的文件)輸入格式FileInputFormat類的輸入分片最小的輸入分片大小通常是1字節(jié)最大的分片大小默認為Java long類型表示的最大值輸入格式FileInputFormat類的輸入分片若
8、需增加map數(shù),可以把mapred.min.split.size調(diào)小,把mapred.max.split.size調(diào)大若需減少map數(shù), 可以把mapred.min.split.size調(diào)大,并把mapred.max.split.size調(diào)小輸入格式FileInputFormat類的輸入分片輸入格式小文件與CombineFileInputFormatFileInputFormat會讓每個輸入文件至少產(chǎn)生一個map任務, 因此如果你的輸入目錄下有許多文件, 而每個文件都很小, 例如幾十kb, 那么每個文件都產(chǎn)生一個map會增加調(diào)度開銷. 作業(yè)變慢.那么如何防止這種問題呢? CombineFile
9、InputFormat能有效的減少map數(shù)量.CombineFileInputFormat是針對小文件而設計的抽象類輸入格式避免切分有些應用程序可能不希望文件被切分,而是用一個mapper完整處理每一個輸入文件。輸入格式把整個文件作為一條記錄來處理輸入格式將若干個小文件打包成順序文件的MapReduce程序輸入格式TextInputFormat默認的InputFormat,鍵是LongWritable類型,存儲該行在整個文件中的字節(jié)偏移量,值是Text類型,是這行的內(nèi)容,不包括任何終止符(換行符和回車符)輸入格式KeyValueTextInputFormat輸入格式NLineInputForm
10、at輸入格式XML大多數(shù)XML解析器會處理整個XML文檔,所以如果一個大型XML文檔由多個輸入分片組成,那么單獨處理每個分片就有挑戰(zhàn)了把整個文件作為一條記錄來處理StreamXmlRecordReader類輸入格式二進制輸入SequenceFileInputFormat Hadoop的順序文件格式存儲二進制的鍵/值對的序列SequenceFileAsTextInputFormatSequenceFileAsBinaryInputFormat 變體 二進制對象 SequenceFile.Reader的appendRaw()方法輸入格式多種輸入數(shù)據(jù)格式往往會隨著時間演變對不同的數(shù)據(jù)集進行連接(jo
11、in,也稱“聯(lián)接”)操作MultipleInputs 允許為每條輸入路徑指定InputFormat和Mapper輸入格式數(shù)據(jù)庫輸入(和輸出)DBInputFormat用于使用JDBC從關系數(shù)據(jù)庫中讀取數(shù)據(jù)最好用于加載小量的數(shù)據(jù)集,如果需要與來自HDFS的大數(shù)據(jù)集連接,要使用MultipleInputs DBOutputFormat適用于將作業(yè)輸出數(shù)據(jù)(中等規(guī)模的數(shù)據(jù))轉(zhuǎn)儲到數(shù)據(jù)庫輸出格式 文本輸出默認的輸出格式是TextOutputFormat鍵和值可以是任意類型,因為TextOutputFormat調(diào)用toString()方法把它們轉(zhuǎn)換為字符串每個鍵和值由制表符進行分割與TextOutputFormat對應的輸入格式是KeyValueTextInputFormatNullWritable輸出格式 二進制輸出SequenceFileOutputFormatSequenceFileAsBinaryOutputFormatMapFileOutputFormat輸出格式 多個輸出輸出格式 多個輸出MultipleOutputFormat可以將數(shù)據(jù)寫到多個文件,這些文件的名稱源于輸出的鍵和值抽象類,兩個實體子類:MultipleTex
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球七葉神安片行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球醫(yī)療器械消毒產(chǎn)品行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國缺氧帳篷行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國有機空穴傳輸材料行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球連續(xù)式鋰電池熱解爐行業(yè)調(diào)研及趨勢分析報告
- 競業(yè)限制合同協(xié)議書
- 家具房屋租賃合同書
- 2025危險廢物委托處置合同
- 房地產(chǎn)借款合同
- 提高談判技巧的訓練課程
- 國有資產(chǎn)管理法律責任與風險防控
- 未婚生子的分手協(xié)議書
- 變更監(jiān)事章程修正案范例
- 北京小客車指標租賃協(xié)議五篇
- 輸液室運用PDCA降低靜脈輸液患者外滲的發(fā)生率品管圈(QCC)活動成果
- YY/T 0681.2-2010無菌醫(yī)療器械包裝試驗方法第2部分:軟性屏障材料的密封強度
- GB/T 20472-2006硫鋁酸鹽水泥
- 煙氣管道阻力計算
- 城鄉(xiāng)環(huán)衛(wèi)一體化保潔服務迎接重大節(jié)日、活動的保障措施
- 醫(yī)院-9S管理共88張課件
- 高考作文復習:議論文論證方法課件15張
評論
0/150
提交評論