hadoop-job(mapReducer计算单词出现的个数)
1.============map===============
package com.it18zhang.hadoop.mr; import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper; import java.io.IOException; /**
* Mapper
*/
public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
/**
* key : 行首偏移量,字节数,意义不大。
* value : 一行文本
*/
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
//
String line = value.toString() ;
String[] arr = line.split(" "); Text keyOut = new Text() ;
IntWritable valueOut = new IntWritable(1) ;
for(String word : arr){
keyOut.set(word);
context.write(keyOut,valueOut);
}
}
}
2.============refucer===============
package com.it18zhang.hadoop.mr; import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer; import java.io.IOException; /**
* reducer
*/
public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
/**
* key : word
* values : 该key下聚合的value
*/
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int count = 0 ;
for(IntWritable iw : values){
count = count + iw.get() ;
}
context.write(key , new IntWritable(count));
}
}
3.============统计===============
package com.it18zhang.hadoop.mr; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
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.output.FileOutputFormat; import java.io.IOException;
public class App {
public static void main(String[] args) throws Exception {
if(args == null || args.length<2){
throw new Exception("参数不足,需要2个参数");
}
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
//递归删除输出目录
fs.delete(new Path(args[1]),true); //创建一个作业
Job job = Job.getInstance(conf);
//调用job方法 名字随便期(word_count_add )
job.setJobName("word_count_add");
//获取类的路径
job.setJarByClass(App.class); // //需要计算的文件路径
// FileInputFormat.addInputPath(job,new Path("file:///Users/yangyanqing/godev/wc"));
// //计算后文件输出
// FileOutputFormat.setOutputPath(job,new Path("file:///Users/yangyanqing/godev/wc/out"));
//需要计算的文件路径
FileInputFormat.addInputPath(job,new Path(args[0]));
//计算后文件输出
FileOutputFormat.setOutputPath(job,new Path(args[1])); //设置mapper类和reducer类
job.setMapperClass(WordCountMapper.class);
job.setReducerClass(WordCountReducer.class); //输出mapper类和reducer类的类型
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class );
//设置readuce个数
job.setNumReduceTasks(1);
//开始作业
job.waitForCompletion(true);
}
}
hadoop-job(mapReducer计算单词出现的个数)的更多相关文章
- hadoop输入分片计算(Map Task个数的确定)
作业从JobClient端的submitJobInternal()方法提交作业的同时,调用InputFormat接口的getSplits()方法来创建split.默认是使用InputFormat的子类 ...
- 神秘常量复出!用0x077CB531计算末尾0的个数 -- De Bruijn 序列
http://www.matrix67.com/blog/archives/3985 神秘常量复出!用0x077CB531计算末尾0的个数 大家或许还记得 Quake III 里面的一段有如天书般的代 ...
- 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行
[TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...
- python练习:一行搞定-统计一句话中每个单词出现的个数
一行搞定-统计一句话中每个单词出现的个数 >>> s'i am a boy a bood boy a bad boy' 方式一:>>> dict([(i,s.spl ...
- map集合修改其中元素 去除Map集合中所有具有相同值的元素 Properties长久保存的流操作 两种用map记录单词或字母个数的方法
package com.swift.lianxi; import java.util.HashMap; import java.util.Iterator; import java.util.Map; ...
- [原创]java WEB学习笔记41:简单标签之带属性的自定义标签(输出指定文件,计算并输出两个数的最大值 demo)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- java统计文本中单词出现的个数
package com.java_Test; import java.io.File; import java.util.HashMap; import java.util.Iterator; imp ...
- mapreducer计算原理
mapreducer计算原理
- Shell统计每个单词出现的个数
题目链接 题目描述 写一个 bash脚本以统计一个文本文件 nowcoder.txt 中每个单词出现的个数. 为了简单起见,你可以假设: nowcoder.txt只包括小写字母和空格. 每个单词只由小 ...
随机推荐
- 如何使用Chrome开发者工具找到Marketing Cloud某个contact的guid
我们使用nodejs对contact进行修改时,需要指定待修改contact实例的guid. 这个guid属于technical属性,在Marketing Cloud UI上默认情况下不可见.如何找到 ...
- 如何使用jMeter发送两个逻辑上相关的HTTP请求
在前一篇文章使用jMeter构造大量并发的随机HTTP请求里我通过jMeter构造了大量的HTTP GET并发请求,对服务器产生了大量读操作. 现在我有另一个需求场景:假设我开发了一个创建Servic ...
- 如何入门Pytorch之二:如何搭建实用神经网络
上一节中,我们介绍了Pytorch的基本知识,如数据格式,梯度,损失等内容. 在本节中,我们将介绍如何使用Pytorch来搭建一个经典的分类神经网络. 搭建一个神经网络并训练,大致有这么四个部分: 1 ...
- Hadoop_29_MapReduce_计数器应用
在实际生产代码中,常常需要将数据处理过程中遇到的不合规数据行进行全局计数,类似这种需求可以借助mapreduce框架中 提供的全局计数器来实现 示例代码如下: public class MultiOu ...
- PAT Basic 1049 数列的片段和 (20 分)
给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段.例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) ...
- 0912 for循环及内置方法
目录 for 循环 1.循环 2.循环取值 3.range 4.for + break 5.for+continue 6.for + else 数字类型内置方法 整型 浮点型 字符串 1.作用 2.作 ...
- 误删rpm命令的恢复方法
rpm命令不能用了,被依赖的yum也不能使用了, 恢复rpm命令无外乎重装, 重装方法1: 使用源码编译, 需要gcc ,cmake包,如果没装,悲剧了 重装方法2: 找一台,和出问题的这台同样系统 ...
- git + idea 配置 github设置ssh免登陆方式提交拉取代码
1.下载安装git,官网:https://git-scm.com/download/win 安装默认配置安装 git2.20版本地址百度网盘地址: 链接:https://pan.baidu.com/ ...
- xftp传输文件失败
迁移yii项目的时候,需要手动传输runtime文件夹.但是发现总是传输失败,后来得知是因为xftp必须是root用户才能传输成功. 或者把传输的目标文件夹权限修改为777. 修改目标文件夹的属主和属 ...
- Luogu P4198 楼房重建 分块 or 线段树
思路:分块 提交:2次(第一次的求解有问题) 题解: 设块长为$T$,我们开$N/T$个单调栈,维护每一块的上升斜率. 修改时暴力重构整个块,$O(T)$ 求解时记录一个最大斜率$lst$,然后块内二 ...