mr例項分為兩個階段,乙個是map階段,乙個是reduce階段,中間用shuff來銜接,我們想執行mapreduce例項,只需要實現map業務和reduce業務邏輯即可。
map實現
public
class
extends }
}reduce實現
public
class
intsumreducer
extends
reducer
result.set(sum);
context.write(key, result);
}}
提交job
public static void main(string args) throws exception
//構造乙個mr任務
job job = job.getinstance(conf, "word count");
//設定執行的jar
job.setjarbyclass(wordcount.class);
job.setcombinerclass(intsumreducer.class);
job.setreducerclass(intsumreducer.class);
job.setoutputkeyclass(text.class);
job.setoutputvalueclass(intwritable.class);
for (int i = 0
; i < otherargs.length - 1; ++i)
fileoutputformat.setoutputpath(job, new path(otherargs[otherargs.length - 1]));
system.exit(job.waitforcompletion(true) ? 0 : 1);
}
最後將**打成jar包,用hadoop jar提交到mapreduce上,hadoop預設是mapreduce框架來執行,但我們可以修改預設配置,將其改為yarn。最終可以在yarn的監控介面展示任務執行的資訊。 hadoop wordcount程式缺陷
在wordcount 程式的main函式中,沒有讀取執行環境中的各種引數的值,全靠hadoop系統的預設引數跑起來,這樣做是有風險的,最突出的就是oom錯誤。自己在剛剛學習hadoop程式設計時,就是模仿wordcount程式編寫。在資料量很小,作為demo程式跑,不會有什麼問題,但當資料量激增,變...
python烤地瓜例項(深入理解物件導向程式設計)
定義乙個地瓜類 class sweetpotato def init self self.cookedstring 生的 self.cookedlevel 0 self.condiments 為了能夠儲存多個資料,往往在開發中讓乙個屬性是列表 def str self return 地瓜 狀態 s ...
靜態聯編與動態聯編
在c 中,多型性主要是通過函式過載實現的。過載函式是指程式中對同名函式進行呼叫時,編譯器會根據函式引數的型別和個數,決定該呼叫哪一段函式 來處理這個函式呼叫。這種把函式呼叫與適當的函式 相對應的動作,叫做聯編。聯編分為靜態聯編和動態聯編。在編譯階段決定執行哪個同名的被呼叫函式,稱為靜態聯編。在編譯階...