日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(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類

package com.xmf.mr.wordCount;import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.util.StringUtils;import java.io.IOException; import java.io.StringWriter;/*** Created by Administrator on 2018/4/16.*/ public class WCMapper extends Mapper<LongWritable, Text, Text, LongWritable> {//每讀一行數(shù)據(jù)就調(diào)用一次這個方法//key這一行的起始偏移量//value是這一行的文本內(nèi)容@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {//將這一行的內(nèi)容轉(zhuǎn)換為StringString line = value.toString();//以空格切分String[] words = StringUtils.split(line, ' ');//遍歷單詞數(shù)組,輸出k-Vfor (String word :words){context.write(new Text(word),new LongWritable(1));}} }復(fù)制代碼

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}>@Overrideprotected 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。