mapreducer第一个例子,主要是统计一个目录下各个文件中各个单词出现的次数。

mapper

package com.mapreduce.wordCount;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;/** TextInputFormat中的recorder 每次读取 一个分片中的 一行文本* 所以map 函数每次读取一行。规定:* 输入:key: 行偏移量  value:一行的文本* 输出: key: 一个词  value: 1* * map 做个映射。*/public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{Text keyOut = new Text();IntWritable valueOut = new IntWritable();protected void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException {String line = value.toString();String[] worlds = line.split(" ");for( String w:worlds){keyOut.set(w);valueOut.set(1);context.write(keyOut,valueOut);}}}

reudcer

package com.mapreduce.wordCount;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
/**  输入: 对应maper 的输出 [key: values] {"love":[1,1,1,1,1,1]}*  输出: 词和每个词的出现次数。*  中间shuffle 阶段自动排序分区。  因为没有分区,所以输出到一个文件中 // 所以结果文件是按 key 排序的。*  */
public class WordReducer extends Reducer<Text, IntWritable, Text, IntWritable>{protected void reduce(Text key, Iterable<IntWritable> value,Context context)throws IOException, InterruptedException {int count = 0;for( IntWritable v:value){count += v.get();}context.write(key, new IntWritable(count));}
}

job 驱动

package com.mapreduce.wordCount;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
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.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;public class WordCountDemo {public static void main(String[] args) throws Exception {// 1 获取configurationConfiguration configuration = new Configuration();// 2 job
        Job job = Job.getInstance(configuration);// 3 作业jar包
        job.setJarByClass(WordCountDemo.class);// 4 map, reduce jar 包job.setMapperClass(WordCountMapper.class);job.setReducerClass(WordReducer.class);// 5 map 输出类型
        job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);// 6 最终 输出类型  (reducer)
        job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);// 7 inputformatclass , outputformatclass  输入输出入文件类型  可能决定分片信息
        job.setInputFormatClass(TextInputFormat.class);job.setOutputFormatClass(TextOutputFormat.class);// 8  输入输出文件路径
        FileInputFormat.setInputPaths(job, new Path("d:/input"));FileOutputFormat.setOutputPath(job, new Path("d:/output"));// 9 job提交
        job.waitForCompletion(true);}}

转载于:https://www.cnblogs.com/lijins/p/10092885.html

mapReducer第一个例子WordCount相关推荐

  1. Ubantu下hadoop运行第一个例子wordcount过程

    Ubantu12.04下hadoop-1.2.1运行第一个例子wordcount过程,分享一下 将WordCount.java文件放在Hadoop安装目录下,并在安装目录下创建输入目录input,目录 ...

  2. 《Unix网络编程卷1-套接字联网API》第一个例子编译 不通过问题解决

    <Unix网络编程卷1-套接字联网API>是本好书. 但是第一个例子不是很好编译. 需要如下步骤: 本人机器CentOS 5.4 1.下载源码 unpv13e解压到任意目录 然后按其rea ...

  3. python中tornado的第一个例子

    python中tornado的第一个例子 1  先安装tornado pip install tornado 2 新建tor.py 记住不能建立 tornado.py 这样的名字  不然会报错 Imp ...

  4. (1)Hadoop 的第一个程序 WordCount 理解

    Hadoop 的第一个程序 WordCount 理解 map and Reduce 相关概念 Map 将数据拆分成一个个键值对, reduce 负责将一个个键值对进行归集, 最后统计出结果 machi ...

  5. GLSL着色语言学习。橙皮书第一个例子GLSL+OpenTK+F#的实现。

    Opengl红皮书有选择的看了一些,最后的讲着色语言GLSL的部分看的甚为不理解,然后找到Opengl橙皮书,然后就容易理解多了. 在前面,我们或多或少接触到Opengl的处理过程,只说前面一些处理, ...

  6. TensorFlow版的“Hello World”,运行官网第一个例子

    TensorFlow版的"Hello World",运行官网第一个例子.代码如下: #!/usr/bin/env python import os import tensorflo ...

  7. Introduction to 3D Game Programming with DirectX 12一书学习记录(第一个例子编译错误)

    准备开始学一学d3d,听说<Introduction to 3D Game Programming with DirectX 12>这本书不错,于是就拿来学一学.不料第一个例子,按照书中的 ...

  8. DirectX9 SDK 下载、安装、VC++开发环境配置、跑通第一个例子

    一 可在 http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.e ...

  9. TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅

    TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅读 ...

最新文章

  1. 基础数据结构【二】————动态数组,单向链表及链表的反转
  2. Java中的即时编译(Just-in-time compilation)
  3. DOS下查看局域网的ip使用情况,以及ip对应的主机名
  4. 华为鸿蒙15日上市,华为鸿蒙什么时候上市
  5. 万达放弃A股上市,数据揭秘王思聪投资为何频繁跳水?
  6. 如何优雅的使用RabbitMQ?
  7. PHP获取客户端的真实IP
  8. 畅享网助力打造IT界的文化人
  9. linux实验目的能学会什么意思,Linux实验.doc
  10. 无需重新部署Eclipse和Tomcat即可进行更改
  11. 计算机图标用鼠标双击和右键都无法启动,电脑桌面只有“我的电脑”图标双击找不开,用右键资源管理器能打开,为什么...
  12. java里当显式请求注释时才接受类名称
  13. C-COT目标跟踪-----连续卷积算子
  14. 从苹果封杀Epic与特斯拉硬刚拼多多看新时代的渠道产品战
  15. C# worksheet设置Excel样式
  16. m3u8转mp4,不用格式软件
  17. 使用微软Azure的tts文本转语音服务出现java.lang.UnsatisfiedLinkError
  18. 使用C#进行串口通信开发上位机软件
  19. 2023电工杯数学建模A题B题
  20. JavaScript一键换肤

热门文章

  1. 位操作——整数用位存储
  2. NLB网路负载均衡管理器详解
  3. 颠沛流离的Arcsight,辉煌不再
  4. Sublime编辑器上的 Vim 插件常用快捷键
  5. 【分布式】Zookeeper请求处理
  6. Python map, reduce, filter和sorted
  7. 手持移动端特殊链接:打电话,发短信,发邮件
  8. three approaches to industrial experiences at cambridge
  9. 【转】UNITY中相机空间,投影空间的正向问题
  10. 新一代视频AI服务 —— 阿里云智能视觉重磅发布