hadoop wordcount例項編寫

2021-07-30 09:24:10 字數 1076 閱讀 8385

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 中,多型性主要是通過函式過載實現的。過載函式是指程式中對同名函式進行呼叫時,編譯器會根據函式引數的型別和個數,決定該呼叫哪一段函式 來處理這個函式呼叫。這種把函式呼叫與適當的函式 相對應的動作,叫做聯編。聯編分為靜態聯編和動態聯編。在編譯階段決定執行哪個同名的被呼叫函式,稱為靜態聯編。在編譯階...