當(dāng)前位置:
首頁 >
hadoop(9)--MapReduce入门WordCount
發(fā)布時間:2025/5/22
30
豆豆
生活随笔
收集整理的這篇文章主要介紹了
hadoop(9)--MapReduce入门WordCount
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
眾所周知,hadoop的核心有hdfs,mapReduce,之前8次的分享都是在將hdfs,那么從這次開始來分享一下mapReduce
MapReduce就是java程序,這一句話一出來讓我這個java程序員看到很容易接受,有木有???
沒錯,學(xué)習(xí)任何東西入門不是helloWorld嗎?怎么變成wordCount了呢?其實這里的wordCount就是helloWorld,先看看wordCount的代碼,如下
map類
Reduce類
package com.xmf.mr.wordCount;import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;/*** Created by Administrator on 2018/4/16.*/ public class WCReducer extends Reducer<Text, LongWritable, Text, LongWritable> {//框架在mapper處理結(jié)束之后,將所有kv緩存起來,進(jìn)行分組,然后傳遞一個組<key,values{}>,調(diào)用一次reduce//<hello,{1,1,1,1,1}>protected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {long count =0;for (LongWritable value : values){count += value.get();}//輸出這個單詞的統(tǒng)計結(jié)果context.write(key,new LongWritable(count));} }復(fù)制代碼啟動類
package com.xmf.mr.wordCount;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;/**用來描述特定的作業(yè)* 比如改作業(yè)使用那個類作為map,哪個作為reducer* 還可以指定輸入數(shù)據(jù)路徑* 還可以指定輸出文件路徑* Created by Administrator on 2018/4/18.*/ public class WCRunner {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {Configuration conf = new Configuration();//System.setProperty("hadoop.home.dir", "D:\\hadoop-2.4.1\\hadoop-2.4.1");Job job = Job.getInstance(conf);//設(shè)置job所用的哪些類在哪里job.setJarByClass(WCRunner.class);job.setMapperClass(WCMapper.class);job.setReducerClass(WCReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(LongWritable.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(LongWritable.class);//原始數(shù)據(jù)存放路徑FileInputFormat.setInputPaths(job,new Path("hdfs://my01:9000/wc/srcdata"));//輸出文件存放路徑FileOutputFormat.setOutputPath(job,new Path("hdfs://my01:9000/wc/output"));//將job提交給集群job.waitForCompletion(true);} } 復(fù)制代碼這個是我寫的一個WordCount,要在windows(本地)運行需要修改很多東西,我已經(jīng)修改了,不懂得朋友可以評論,我會收到通知,及時給你解答,這里就不在贅述,那么先看看在linux環(huán)境中,用hadoop命令運行的這種方式,這種方式不利于調(diào)試,入門嘛,先不管調(diào)試了,我們的目的很明確,就是對MR有一個直觀的認(rèn)識.
記錄一下intellij idea怎么打jar包
第一步:
image.png
第二步:
image.png
第三步:
image.png
=====華麗的分割線====
繼續(xù),將上面的代碼打位jar包,發(fā)送到服務(wù)器上
image.png
數(shù)據(jù)準(zhǔn)備
image.png
數(shù)據(jù):
image.png
運行hadoop jar wordCount.jar com.xmf.mr.wordCount.WCRunner 復(fù)制代碼image.pngimage.png
已經(jīng)執(zhí)行完了,看看執(zhí)行結(jié)果
image.png從結(jié)果可以看出來已經(jīng)統(tǒng)計出了word的數(shù)量
望指正,不吝賜教!
總結(jié)
以上是生活随笔為你收集整理的hadoop(9)--MapReduce入门WordCount的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kotlin对ZipInputStrea
- 下一篇: BZOJ 1108 [POI2007]天