mapreduce程序開發的一些總結

mapreduce在編程的時候,基本上一個固化的模式,沒有太多可靈活改變的地方,除了以下幾處:

?

1、輸入數據接口:InputFormat ---> FileInputFormat(文件類型數據讀取的通用抽象類) DBInputFormat (數據庫數據讀取的通用抽象類)

默認使用的實現類是: TextInputFormat job.setInputFormatClass(TextInputFormat.class)

TextInputFormat的功能邏輯是:一次讀一行文本,然后將該行的起始偏移量作為key,行內容作為value返回

2、邏輯處理接口: Mapper

完全需要用戶自己去實現其中 map() setup() clean()

3、map輸出的結果在shuffle階段會被partition以及sort,此處有兩個接口可自定義:

Partitioner

有默認實現 HashPartitioner,邏輯是 根據key和numReduces來返回一個分區號; key.hashCode()&Integer.MAXVALUE % numReduces

通常情況下,用默認的這個HashPartitioner就可以,如果業務上有特別的需求,可以自定義

Comparable

當我們用自定義的對象作為key來輸出時,就必須要實現WritableComparable接口,override其中的compareTo()方法

?

4、reduce端的數據分組比較接口 : Groupingcomparator

reduceTask拿到輸入數據(一個partition的所有數據)后,首先需要對數據進行分組,其分組的默認原則是key相同,然后對每一組kv數據調用一次reduce()方法,并且將這一組kv中的第一個kv的key作為參數傳給reduce的key,將這一組數據的value的迭代器傳給reduce()的values參數

利用上述這個機制,我們可以實現一個高效的分組取最大值的邏輯:

自定義一個bean對象用來封裝我們的數據,然后改寫其compareTo方法產生倒序排序的效果

然后自定義一個Groupingcomparator,將bean對象的分組邏輯改成按照我們的業務分組id來分組(比如訂單號)

這樣,我們要取的最大值就是reduce()方法中傳進來key

?

5、邏輯處理接口:Reducer

完全需要用戶自己去實現其中 reduce() setup() clean()

?

6、輸出數據接口: OutputFormat ---> 有一系列子類 FileOutputformat DBoutputFormat .....

默認實現類是TextOutputFormat,功能邏輯是: 將每一個KV對向目標文本文件中輸出為一行

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537680.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537680.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537680.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度學習數據驅動_利用深度學習實現手繪數據可視化的生成

前一段時間,我開發了Sketchify, 該工具可以把任何以SVG為渲染技術的可視化轉化為手繪風格。(參考手繪風格的數據可視化實現 Sketchify)那么問題來了,很多的chart是以Canvas為渲染技術的,那要怎么辦&#xf…

遠程計算機無法操作,win7系統的QQ遠程協助無法控制計算機的問題的解決方法

在使用win7系統的計算機工作和學習過程中,可能會發生win7系統的QQ遠程協助無法控制計算機的情況. 如何處理win7系統的QQ遠程控制無法控制計算機的問題?對于計算機級別的用戶,如果win7系統qq遠程協助無法控制計算機,通常不知道該怎…

java應用中的日志介紹

日志在應用程序中是非常非常重要的,好的日志信息能有助于我們在程序出現 BUG 時能快速進行定位,并能找出其中的原因。 但是,很多介紹 AOP 的地方都采用日志來作為介紹,實際上日志要采用切面的話是極其不科學的!對于日志…

微軟全新Chromium版Edge瀏覽器下載

下載地址: https://www.microsoft.com/en-us/edge

企業網站 源碼 服務郵箱:_后來才知道:溫州騰訊企業郵箱定制服務

后來才知道:溫州騰訊企業郵箱定制服務 qnmsptdb后來才知道:溫州騰訊企業郵箱定制服務 軟文推廣得到大家的轉發之后,那么軟文的經濟價值也會隨之而來。內容更新質量言外之意,如果你長期更新低質量內容,是不可取的&#…

圣三一學院計算機專業,360教育集團:愛爾蘭都柏林大學圣三一學院計算機專業...

應用,新產品設計。網絡和分布系統的安全和管理課程介紹計算機基層和網絡安全,研究網絡管理的方法和高端信息服務的管理。這六個部分內容的學習包括每周大概20小時的溝通時間,包括講座、輔導、研討會、試驗等。絕大部分課程要求學生完成其他課…

JavaScript的檢測及其數據類型

一、JavaScript有幾種類型的值?Javascript有兩種數據類型,分別是基本數據類型和引用數據類型。其中基本數據類型包括Undefined、Null、Boolean、Number、String、Symbol (ES6新增,表示獨一無二的值),而引用數據類型統稱為Object對…

我是Leader,我被降職成了普通員工,HR說:公司要梯隊年輕化

“BAT也不是完美的避風港哇~”這是老劉說的,老劉是BAT某家的一個Leader,職級約類似T7(T族一般是技術族,管理是M族),在BAT某家呆了11年,但是在整個互聯網行業推崇,梯隊年輕化的氛圍時,老劉所在的…

in最多可以放多少?_汽車最多可以停放多少天不開?維修師傅:盡可能別超過這個時間...

在當下,買車似乎已經成為了一種消費潮流,其中不乏一些本身用車需求不明顯但也隨大流買車的人,結果車買回來之后最初的新鮮勁一過就放在那里不怎么用了。當然也有部分車主是因為自己的工作修需要經常需要在外出差,那么就算想天天開…

計算機電源風扇安裝方法,機箱風扇怎么裝 電腦機箱風扇電源線接法

夏天天氣炎熱,電腦機箱內溫度也較高,溫度過高會影響電腦性能出現死機等問題,甚至影響硬件壽命。所以給機箱裝風扇來散熱是非常重要的。那么,機箱風扇怎么裝合理呢?機箱風扇的電源線怎么接呢?下面分享一下機箱風...夏天天氣炎熱&…

使用微服務失敗的12個原因

在過去的幾年中,我已經對處于數字化轉型過程中的多個產品團隊進行了架構審查。大多數團隊都在按照微服務架構構建產品。他們有使用基于微服務的體系結構的所有正確意圖-更快的開發,更好的可伸縮性,更小的獨立團隊,獨立的部署&…

市場壓力只有老板扛?柏明頓阿米巴如何傳遞經營壓力

內部交易是阿米巴經營模式中的一個重要環節,通過內部交易,使企業內部上下道工序之間以價格為紐帶,以服務和產品進行等價交換,統一結算交易。通過內部交易行為,可以掌握各個阿米巴單元的盈虧狀態。阿米巴構建內部市場&a…

flutter怎么添加ios網絡權限_視頻號直播間怎么添加購物車商品;超詳細流程步驟。丨國仁網絡資訊...

蘑菇租房的聯合創始人龍東平前幾個月曾說:“視頻號是一次掀翻桌子重新排座次的機會,是巨浪滔天,是新世界,新秩序。”視頻號發展趨勢愈加迅猛,越來越多的玩家涌入,正在獲得新一波社交流量。為什么更加受歡迎…

網絡中服務器是指為網絡提供資源,并對這些資源進行管理的計算機,2016年職稱計算機考試Internet沖刺試題及答案3...

1、Internet的通信協議是( A )A、TCP/IP B、OSI/ISOC、NetBEUI D、NWLink2、把計算機網絡分為有線和無線網的主要分類依據是(C)A、網絡成本 B、網絡的物理位置C、網絡的傳輸介質 D、網絡的拓撲結構3、要將兩臺計算機直接相連,那么使用雙絞線的類型為(A)A、交叉線 B、…

Visio 圖形大小如何隨文字多少自動調整?

Visio 圖形大小默認是根據圖形內文字多少自動調整。 如果手動調整過圖形,那么該圖形就不再隨文字多少自動調整了。 解決辦法: 刪除該圖形,重新拉取一個,重新編寫文本

java同一個包中,類之間的的調用

如果是靜態方法,直接 類名.方法名即可,如果是非靜態方法,則需new一個對象出來,然后用對象.方法名調用如:public class A{public static void T(){System.out.print("這是A類的方法");}public void T2(){Syst…

mos管開關電路_【電路】MOS管開關電路圖詳解(一)

MOS管的開關特性靜態特性MOS管作為開關元件,同樣是工作在截止或導通兩種狀態。由于MOS管是電壓控制元件,所以主要由柵源電壓uGS決定其工作狀態。工作特性如下:※uGS※ uGS>開啟電壓UT:MOS管工作在導通區,漏源電流iDSUDD/(RDrDS…

Visio圖形自動編號

操作步驟: 1.進入“視圖”--“加載項” 2.“加載項”---“運行加載項” 3.“運行加載項”---“給形狀編號”

偽代碼就是計算機語言 正確嗎,偽代碼實例紹.ppt

偽代碼實例紹第2章 偽代碼實例介紹 主講:黃明瓊 第2章 偽代碼實例介紹 2.1 偽代碼介紹 2.2 三角形問題 2.3 NextDate函數問題 2.4 傭金問題 2.5 簡單ATM系統 2.6 貨幣轉換器 本章教學目標 正確理解偽代碼的概念 正確理解偽代碼的規則 正確理解偽代碼實例中的邏輯 能…

Java面試170題答案解析(1-20題)

為什么80%的碼農都做不了架構師?>>> 轉載于:https://my.oschina.net/lanyu96/blog/2250020