仿分词统计的MapReduce 程序。
HDFS 数据格式 :
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.rocky.util.TimeUtils;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.mapred.lib.MultipleOutputFormat;
import org.apache.hadoop.util.Progressable;
import java.io.IOException;
import java.net.URI;
import java.util.Iterator;
public class MulOutput {
public static final String clazz = "com.spring.aop.StorageManagerStatAspect";
public static final String m_download = "com.systoon.scloud.master.controller.ImageController.download";
public static final String m_upload = "com.systoon.scloud.master.controller.DirectUploadFile.directUploadFile";
public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
Text word = new Text();
@Override
public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output,
Reporter reporter) throws IOException {
String line = value.toString();
if(line.contains(clazz)){
if(line.contains(m_download)){
String tempObject = line.split(clazz)[1];
String tmp = tempObject.substring(1,tempObject.length());
JSONObject jsonObject = JSON.parseObject(tmp);
String method = jsonObject.get("method").toString();
if( method.equals(m_download) ){
word.set("download");
output.collect(word, one);
}
} else if(line.contains(m_upload)) {
String tempObject = line.split(clazz)[1];
String tmp = tempObject.substring(1,tempObject.length());
JSONObject jsonObject = JSON.parseObject(tmp);
String method = jsonObject.get("method").toString();
if( method.equals(m_upload) ){
word.set("upload");
output.collect(word, one);
}
} else {
word.set("debug");
output.collect(word,one);
}
} else {
word.set("others");
output.collect(word, one);
}
}
}
public static class Reduce extends MapReduceBase
implements Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce(Text key, Iterator<IntWritable> values,
OutputCollector<Text, IntWritable> output, Reporter reporter)
throws IOException{
int sum = 0;
while (values.hasNext()) {
sum += values.next().get();
}
output.collect(key, new IntWritable(sum));
}
}
public static void main(String[] args) throws Exception{
JobConf jobConf = new JobConf(MulOutput.class);
jobConf.setJobName("rocky_test");
String outPath = "/test/mapReduce/statis"+TimeUtils.getStringDate();
final FileSystem filesystem = FileSystem.get(new URI(outPath), jobConf);
if(filesystem.exists(new Path(outPath))){
filesystem.delete(new Path(outPath), true);
}
jobConf.setMapperClass(Map.class); //为job设置Mapper类
jobConf.setMapOutputKeyClass(Text.class); //输出数据设置Key类
jobConf.setMapOutputValueClass(IntWritable.class); //输出数据设置Key类
jobConf.setCombinerClass(Reduce.class); // 为job设置Combiner类
jobConf.setReducerClass(Reduce.class); // 为job设置Reduce类
jobConf.setOutputKeyClass(Text.class); // 输出数据设置Key类
jobConf.setOutputValueClass(IntWritable.class); // 输出数据设置Key类
FileInputFormat.setInputPaths(jobConf, new Path("/test/mapReduce/statistics.log.2016-02-26"));
// // 扫描组合path
// FileInputFormat.addInputPath();
jobConf.setOutputFormat(MyMultipleFilesTextOutputFormat.class);
FileOutputFormat.setOutputPath(jobConf, new Path(outPath));
JobClient.runJob(jobConf); //运行一个job
}
}
附件列表
仿分词统计的MapReduce 程序。的更多相关文章
- 在Hadoop上运行基于RMM中文分词算法的MapReduce程序
原文:http://xiaoxia.org/2011/12/18/map-reduce-program-of-rmm-word-count-on-hadoop/ 在Hadoop上运行基于RMM中文分词 ...
- 大数据学习——mapreduce程序单词统计
项目结构 pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...
- 从零开始学习Hadoop--第2章 第一个MapReduce程序
1.Hadoop从头说 1.1 Google是一家做搜索的公司 做搜索是技术难度很高的活.首先要存储很多的数据,要把全球的大部分网页都抓下来,可想而知存储量有多大.然后,要能快速检索网页,用户输入几个 ...
- Eclipse下使用Hadoop单机模式调试MapReduce程序
在单机模式下Hadoop不会使用HDFS,也不会开启任何Hadoop守护进程,所有程序将在一个JVM上运行并且最多只允许拥有一个reducer 在Eclipse中新创建一个hadoop-test的Ja ...
- 使用Python实现Hadoop MapReduce程序
转自:使用Python实现Hadoop MapReduce程序 英文原文:Writing an Hadoop MapReduce Program in Python 根据上面两篇文章,下面是我在自己的 ...
- 用PHP编写Hadoop的MapReduce程序
用PHP编写Hadoop的MapReduce程序 Hadoop流 虽然Hadoop是用Java写的,但是Hadoop提供了Hadoop流,Hadoop流提供一个API, 允许用户使用任何语言编 ...
- HADOOP之MAPREDUCE程序应用二
摘要:MapReduce程序进行单词计数. 关键词:MapReduce程序 单词计数 数据源:人工构造英文文档file1.txt,file2.txt. file1.txt 内容 Hello Ha ...
- Hadoop之MapReduce程序应用三
摘要:MapReduce程序进行数据去重. 关键词:MapReduce 数据去重 数据源:人工构造日志数据集log-file1.txt和log-file2.txt. log-file1.txt内容 ...
- 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行
[TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...
随机推荐
- pic中断特别说明
在调试产品W660-MODBUS过程中发现,程序工作在偶然情况下会工作异常,经过将近一个礼拜的追踪,发现PIC中断有一下两个怪异特性: 在刚进入中断时就应该清除中断标志,如果在最后返回之前才清除标志, ...
- HDU 1394 Minimum Inversion Number【 树状数组 】
题意:给出n个数,每次可以把第一个数挪到最后一个位置去,问这n种排列里面的最小逆序对数 先把最开始的逆序对数求出来 然后对于一个数a[i],比它小的数有a[i] - 1个,比它大的数有n - a[i] ...
- swift语言点评四-Closure
总结:整个Closure的作用在于简化语言表述形式. 一.闭包的简化 Closure expression syntax has the following general form: { () -& ...
- Docker学习笔记(1)----认识Docker
1. 什么Docker? Docker是一个能把开发的应用程序自动部署到容器的引擎,它使用go语言编写的开源引擎,它在github上面个的地址为:https://github.com/docker/d ...
- SpringCloud学习笔记(9)----Spring Cloud Netflix之声明式 REST客户端 -Feign的使用
1. 什么是Feign? Feign是一种声明式.模板化的HTTP客户端,在SpringCloud中使用Feign.可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到 ...
- FCC高级编程篇之Record Collection
Record Collection You are given a JSON object representing a part of your musical album collection. ...
- 洛谷 P3203 [HNOI2010]弹飞绵羊 分块
我们只需将序列分成 n\sqrt{n}n 块,对于每一个点维护一个 val[i]val[i]val[i],to[i]to[i]to[i],分别代表该点跳到下一个块所需要的代价以及会跳到的节点编号.在 ...
- harbor 安装过程
[root@master01 harbor]# ./prepare Clearing the configuration file: ./common/config/adminserver/env ...
- python scrapy爬取HBS 汉堡南美航运公司柜号信息
下面分享个scrapy的例子 利用scrapy爬取HBS 船公司柜号信息 1.前期准备 查询提单号下的柜号有哪些,主要是在下面的网站上,输入提单号,然后点击查询 https://www.hamburg ...
- dva基本用法
1. npm install -g dva-cli 全局安装dva.2. dva new myApp --demo 创建dva项目.3. cd myApp npm start 启动项目.4. 定义 m ...