




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第Java編寫Mapreduce程序過程淺析目錄Maven項(xiàng)目下所需依賴數(shù)據(jù)類型一、Mapper類二、Reducer類三、執(zhí)行類程序執(zhí)行結(jié)果一個(gè)Maprduce程序主要包括三部分:Mapper類、Reducer類、執(zhí)行類。
Maven項(xiàng)目下所需依賴
dependencies
dependency
groupIdorg.apache.hadoop/groupId
artifactIdhadoop-client/artifactId
version3.3.0/version
/dependency
dependency
groupIdjunit/groupId
artifactIdjunit/artifactId
version4.12/version
scopetest/scope
/dependency
dependency
groupIdorg.slf4j/groupId
artifactIdslf4j-api/artifactId
version1.7.30/version
/dependency
dependency
groupIdjunit/groupId
artifactIdjunit/artifactId
version3.8.2/version
/dependency
dependency
groupIdjunit/groupId
artifactIdjunit/artifactId
version4.12/version
scopecompile/scope
/dependency
/dependencies
數(shù)據(jù)類型
Text:一種可變長(zhǎng)度的字節(jié)數(shù)組,用于表示文本數(shù)據(jù)。相當(dāng)于Java中的String。LongWritable、IntWritable、FloatWritable、DoubleWritable:分別用于表示長(zhǎng)整型、整型、浮點(diǎn)型和雙精度浮點(diǎn)型數(shù)據(jù)。相當(dāng)于Java中的long、int、float和double。BooleanWritable:用于表示布爾類型數(shù)據(jù)。相當(dāng)于Java中的boolean。NullWritable:用于表示空值,通常用于表示Map任務(wù)的輸出中間結(jié)果數(shù)據(jù)中的值為空。相當(dāng)于Java中的null。ArrayWritable:用于表示數(shù)組類型數(shù)據(jù)。相當(dāng)于Java中的數(shù)組。MapWritable:一種可序列化的Map數(shù)據(jù)結(jié)構(gòu),可以作為Map任務(wù)的輸出(中間結(jié)果數(shù)據(jù))或Reduce任務(wù)的輸入。相當(dāng)于Java中的Map。WritableComparable:一種可序列化的、可比較的數(shù)據(jù)類型接口,可以作為Map任務(wù)或Reduce任務(wù)的輸入輸出數(shù)據(jù)類型。
一、Mapper類
importorg.apache.hadoop.io.LongWritable;
importorg.apache.hadoop.io.Text;
importorg.apache.hadoop.mapreduce.Mapper;
importorg.apache.hadoop.util.StringUtils;
importjava.io.IOException;
publicclassWordCountMapperextendsMapperLongWritable,Text,Text,LongWritable{
@Override
protectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{
//如果當(dāng)前數(shù)據(jù)不為空
if(value!=null){
//獲取每一行的數(shù)據(jù)
Stringline=value.toString();
//將一行數(shù)據(jù)根據(jù)空格分開
//String[]words=line.split("");
String[]words=StringUtils.split(line,'');//hadoop的StringUtils.split方法對(duì)大數(shù)據(jù)來說比Java自帶的擁有更好的性能
//輸出鍵值對(duì)
for(Stringword:words){
context.write(newText(word),newLongWritable(1));
}
二、Reducer類
importorg.apache.hadoop.io.LongWritable;
importorg.apache.hadoop.io.Text;
importorg.apache.hadoop.mapreduce.Reducer;
importjava.io.IOException;
publicclassWordCountReducerextendsReducerText,LongWritable,Text,LongWritable{
@Override
protectedvoidreduce(Textkey,IterableLongWritablevalues,Contextcontext)throwsIOException,InterruptedException{
//累加單詞的數(shù)量
longsum=0;
//遍歷單詞計(jì)數(shù)數(shù)組,將值累加到sum中
for(LongWritablevalue:values){
sum+=value.get();
//輸出每次最終的計(jì)數(shù)結(jié)果
context.write(key,newLongWritable(sum));
}
三、執(zhí)行類
importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.conf.Configured;
importorg.apache.hadoop.fs.Path;
importorg.apache.hadoop.io.LongWritable;
importorg.apache.hadoop.io.Text;
importorg.apache.hadoop.mapreduce.Job;
importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;
importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
importorg.apache.hadoop.util.Tool;
importorg.apache.hadoop.util.ToolRunner;
publicclassWordCountRunnerextendsConfiguredimplementsTool{
publicstaticvoidmain(String[]args)throwsException{
ToolRunner.run(newConfiguration(),newWordCountRunner(),args);
@Override
publicintrun(String[]args)throwsException{
Configurationconf=newConfiguration();
Jobjob=Job.getInstance(conf,"wordcount");
job.setJarByClass(WordCountRunner.class);
job.setMapperClass(WordCountMapper.class);
job.setReducerClass(WordCountReducer.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(LongWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(LongWritable.class);
//設(shè)置統(tǒng)計(jì)文件輸入的路徑,將命令行的第一個(gè)參數(shù)作為輸入文件的路徑
//讀取maven項(xiàng)目下resources目錄的文檔
Stringpath=getClass().getResource("/words.txt").getPath();
FileInputFormat.setInputPaths(job,path);
//設(shè)置結(jié)果數(shù)據(jù)存放路徑,將命令行的第二個(gè)參數(shù)作為數(shù)據(jù)的輸出路徑
//輸出目錄必須不存在!!!
FileOutputFormat.setOutputPath(job,newPath("./output"));
returnjob.waitForCompletion(true)0:1;
}
程序執(zhí)行結(jié)果
.part-r-00000.crc:是Reduce任務(wù)輸出結(jié)果文件的校驗(yàn)文件,用于校驗(yàn)Reduce任務(wù)輸出結(jié)果文件的完整性和正確性。該文件由Hadoop框架自動(dòng)生成,不需要手動(dòng)創(chuàng)建,其內(nèi)容是Reduce任務(wù)輸出結(jié)果文件的校驗(yàn)和信息。._S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 探討西方政治制度中的形式與實(shí)質(zhì)試題及答案
- 現(xiàn)代西方政治的情感政治與挑戰(zhàn)試題及答案
- 推動(dòng)社會(huì)創(chuàng)新的公共政策探討試題及答案
- 2025年北京通州區(qū)氣象局招聘筆試試卷
- 開源軟件與商業(yè)軟件的優(yōu)劣對(duì)比及試題與答案
- 2025年食品與飲料行業(yè)食品行業(yè)食品安全監(jiān)管執(zhí)法隊(duì)伍建設(shè)策略優(yōu)化方案研究
- 深入分析西方國(guó)家社會(huì)物質(zhì)基礎(chǔ)的試題及答案
- 軟件架構(gòu)設(shè)計(jì)實(shí)踐與試題答案
- 教育科技企業(yè)創(chuàng)新商業(yè)模式與盈利模式報(bào)告2025
- 醫(yī)院信息化背景下2025年電子病歷系統(tǒng)優(yōu)化與醫(yī)療信息互聯(lián)互通研究報(bào)告
- 四牙源性腫瘤課件
- Unit 9 Section B 1a-1d 教學(xué)設(shè)計(jì) 2023-2024學(xué)年人教版英語八年級(jí)下冊(cè)
- 直播違禁詞培訓(xùn)
- 社會(huì)工作行政(第三版)課件匯 時(shí)立榮 第1-5章 社會(huì)服務(wù)機(jī)構(gòu)- 領(lǐng)導(dǎo)與溝通、激勵(lì)
- 2024年全國(guó)高級(jí)美發(fā)師技能考試題庫(含答案)
- 拔牙流程四手操作
- 應(yīng)急轉(zhuǎn)貸基金培訓(xùn)
- DB 32-T 3701-2019 江蘇省城市自來水廠關(guān)鍵水質(zhì)指標(biāo)控制標(biāo)準(zhǔn)
- 連接器行業(yè)專業(yè)英語高頻詞句
- 2024年中考?xì)v史第二輪專題復(fù)習(xí)5:中國(guó)古代邊疆治理(訓(xùn)練題)
- 呼吸內(nèi)科進(jìn)修匯報(bào)課件
評(píng)論
0/150
提交評(píng)論