众所周知,hadoop的核心有hdfs,mapReduce,之前8次的分享都是在将hdfs,那么从这次开始来分享一下mapReduce
MapReduce就是java程序,这一句话一出来让我这个java程序员看到很容易接受,有木有???
没错,学习任何东西入门不是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> {//每读一行数据就调用一次这个方法//key这一行的起始偏移量//value是这一行的文本内容@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {//将这一行的内容转换为StringString line = value.toString();//以空格切分String[] words = StringUtils.split(line, ' ');//遍历单词数组,输出k-Vfor (String word :words){context.write(new Text(word),new LongWritable(1));}}
}复制代码

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}>@Overrideprotected 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.png
image.png

已经执行完了,看看执行结果

image.png

从结果可以看出来已经统计出了word的数量

望指正,不吝赐教!

hadoop(9)--MapReduce入门WordCount相关推荐

  1. Hadoop之MapReduce入门

    Hadoop之MapReduce概述 目录 MapReduce定义 MapReduce优缺点 MapReduce核心思想 MapReduce进程 MapReduce编程规范 MapReduce案例实操 ...

  2. Hadoop编写MapReduce之入门案例WordCount(自带+编写java)

    目录标题 Hadoop自带案例WordCount运行 MapReduce可以很好地应用于各种计算问题 网页查看 集群上jar包的位置 程序的介绍 自己编写WordCount的project(MapRe ...

  3. MapReduce入门(一)—— MapReduce概述 + WordCount案例实操

    MapReduce入门(一)-- MapReduce概述 文章目录 MapReduce入门(一)-- MapReduce概述 1.1 MapReduce 定义 1.2 MapReduce 优缺点 1. ...

  4. 初学Hadoop之图解MapReduce与WordCount示例分析

    Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算. HDFS是Google File System(GFS) ...

  5. 【Big Data - Hadoop - MapReduce】初学Hadoop之图解MapReduce与WordCount示例分析

    Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算. HDFS是Google File System(GFS) ...

  6. Hadoop之图解MapReduce与WordCount示例分析

    Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算. HDFS是Google File System(GFS) ...

  7. 04 分布式文件系统以及MapReduce入门程序

    文章目录 04 分布式文件系统以及MapReduce入门程序 分布式文件系统HDFS 1.分布式文件系统hdfs详细介绍 2.HDFS分布式文件系统设计目标 3.HDFS的来源 4.hdfs的架构图 ...

  8. 大数据技术之Hadoop(MapReduce)

    大数据技术之Hadoop(MapReduce) (作者:大数据研发部) 版本:V1.4 第1章MapReduce入门 map 计算 reduce 规约 1.1 MapReduce定义 Mapreduc ...

  9. MapReduce示例——WordCount(统计单词)

    MapReduce示例--WordCount(统计单词) 过程分析 统计单词,把数据中的单词分别统计出出现的次数 过程图(图片源自网络): 实现Mapper.Reducer.Driver WordCo ...

最新文章

  1. JS中使用定时动态获取系统当前时间
  2. python打包exe 之打包sklearn模型中的各种坑及其解决方法。
  3. SQL*Plus中替换变量与定义变量
  4. Java 8 CompletableFuture
  5. 监控程序崩溃重启_Bug 10 重启和正常输入的抉择记录
  6. CF1548A Web of Lies
  7. 1.0jpa 2.0_JPA 2.1实体图–第1部分:命名实体图
  8. 怎么判断一个字符串的最长回文子串是否在头尾_每日一道算法题,让你的头脑更活跃(寻找最长回文子串)...
  9. 【Python】表白代码
  10. Sentinel系统规则_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0044
  11. java web编码详解_Java Web 之编解码分析
  12. 函数多个返回值(返回多个参数/局部变量)通过双重指针来实现
  13. 镜像下载vscode
  14. centos php ioncube_CentOS简单安装ioncube组件
  15. 运动目标检测发展概述
  16. IDEA删除多余空行
  17. java设计模式总结1
  18. Qt QStringLiteral
  19. 抖音算法揭秘,百万粉丝的背后逻辑
  20. putty下载(Putty下载中断)

热门文章

  1. 在malloc函数中为什么常用sizeof来设定内存分配的大小?
  2. JUC并发编程二 并发架构--线程运行原理
  3. 常考数据结构与算法:容器盛水问题
  4. Elasticsearch索引定时清理
  5. Chapter 1:Introduction
  6. 全球买全球卖 国际化的技术挑战
  7. (笔试题)将数组分成两组,使两组的和的差的绝对值最小
  8. 汇编语言第二课作业2.1
  9. Linux环境下安装Mysql+SphinxSE
  10. iOS自定义NavigationBar