hadoop(9)--MapReduce入门WordCount
生活随笔
收集整理的這篇文章主要介紹了
hadoop(9)--MapReduce入门WordCount
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
眾所周知,hadoop的核心有hdfs,mapReduce,之前8次的分享都是在將hdfs,那么從這次開始來分享一下mapReduce
MapReduce就是java程序,這一句話一出來讓我這個java程序員看到很容易接受,有木有???
沒錯,學習任何東西入門不是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處理結束之后,將所有kv緩存起來,進行分組,然后傳遞一個組<key,values{}>,調用一次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();}//輸出這個單詞的統計結果context.write(key,new LongWritable(count));} }復制代碼啟動類
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;/**用來描述特定的作業* 比如改作業使用那個類作為map,哪個作為reducer* 還可以指定輸入數據路徑* 還可以指定輸出文件路徑* 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);//設置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);//原始數據存放路徑FileInputFormat.setInputPaths(job,new Path("hdfs://my01:9000/wc/srcdata"));//輸出文件存放路徑FileOutputFormat.setOutputPath(job,new Path("hdfs://my01:9000/wc/output"));//將job提交給集群job.waitForCompletion(true);} } 復制代碼這個是我寫的一個WordCount,要在windows(本地)運行需要修改很多東西,我已經修改了,不懂得朋友可以評論,我會收到通知,及時給你解答,這里就不在贅述,那么先看看在linux環境中,用hadoop命令運行的這種方式,這種方式不利于調試,入門嘛,先不管調試了,我們的目的很明確,就是對MR有一個直觀的認識.
記錄一下intellij idea怎么打jar包
第一步:
image.png
第二步:
image.png
第三步:
image.png
=====華麗的分割線====
繼續,將上面的代碼打位jar包,發送到服務器上
image.png
數據準備
image.png
數據:
image.png
運行hadoop jar wordCount.jar com.xmf.mr.wordCount.WCRunner 復制代碼image.pngimage.png
已經執行完了,看看執行結果
image.png從結果可以看出來已經統計出了word的數量
望指正,不吝賜教!
總結
以上是生活随笔為你收集整理的hadoop(9)--MapReduce入门WordCount的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kotlin对ZipInputStrea
- 下一篇: BZOJ 1108 [POI2007]天