1. 云栖社区>
  2. 技术文集>
  3. 列表>
  4. 正文

Hadoop之MapReduce程序应用三

作者:用户 来源:互联网 时间:2018-05-27 09:34:58

hadoop应用mapreduce

Hadoop之MapReduce程序应用三 - 摘要: 本文讲的是Hadoop之MapReduce程序应用三, 摘要:MapReduce程序进行数据去重。 关键词:MapReduce   数据去重 数据源:人工构造日志数据集log-file1.txt和log-file2.txt。 log-file1.txt

摘要:MapReduce程序进行数据去重。

关键词:MapReduce   数据去重

数据源:人工构造日志数据集log-file1.txt和log-file2.txt。

log-file1.txt内容

2014-1-1    wangluqing

2014-1-2    root

2014-1-3   root

2014-1-4  wangluqing

2014-1-5  root

2014-1-6  wangluqing

log-file2.txt内容

2014-1-1  root

2014-1-2  root

2014-1-3  wangluqing

2014-1-4  wangluqing

2014-1-5  wangluqing

2014-1-6  root

问题描述:

解决方案:

1 开发工具   VM10 + Ubuntu12.04+Hadoop1.1.2

2 设计思路  数据去重是让原始数据中出现次数超过一次的数据在输出文件中只出现一次。利用键值的唯一性法则可以实现数据的去重。

程序清单

package com.wangluqing;

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.util.GenericOptionsParser;

public class DeleteDataDuplication {
public static class DeleteDataDuplicationMapper extends Mapper<Object,Text,Text,Text> {
private static Text line = new Text();
public void map(Object key, Text value, Context context) throws IOException,InterruptedException {
line = value;
context.write(line,new Text(" "));
}
}

public static class DeleteDataDuplicationReducer extends Reducer<Text,Text,Text,Text> {
public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
context.write(key,new Text(" "));
}
}

public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf,args).getRemainingArgs();
if(otherArgs.length !=2 ) {
System.err.println("Usage:DeleteDataDuplication<in><out>");
System.exit(2);
}
Job job = new Job(conf,"delete data duplication");
job.setJarByClass(DeleteDataDuplication.class);
job.setMapperClass(DeleteDataDuplicationMapper.class);
job.setCombinerClass(DeleteDataDuplicationReducer.class);
job.setReducerClass(DeleteDataDuplicationReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);

FileInputFormat.addInputPath(job,new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job,new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true)?0:1);
}
}

3 执行程序

关于如何执行程序,可以参考《Hadoop之MapReduce程序应用二》一文中执行程序所述内容。

查看经过数据去重后的结果如下。

2014-1-1 root
2014-1-1 wangluqing
2014-1-2 root
2014-1-3 root
2014-1-3 wangluqing
2014-1-4 wangluqing
2014-1-5 root
2014-1-5 wangluqing
2014-1-6 root
2014-1-6 wangluqing

总结:

数据去重可以应用到统计大数据集上数据种类的个数,从网站日志文件中计算访问地等场景。

Resource:

1   http://www.wangluqing.com/2014/03/hadoop-mapreduce-app3/

2  《Hadoop实战 第二版》陆嘉恒著 第5章 MapReduce应用案例

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有 的相关内容,欢迎继续使用右上角搜索按钮进行搜索hadoop , 应用 mapreduce ,以便于您获取更多的相关知识。

hadoop-求救高手,Mapreduce导入数据到Hadoop报ClassNotFoundException

问题描述 求救高手,Mapreduce导入数据到Hadoop报ClassNotFoundException 最近在用Mapreduce连Hadoop,出现各类问题。请高手答疑。 环境: hadoop:2.7.0 Hbase:1.0.1.1 刚开始的时候报:HBaseConfig...

Hive优化Hive Multi Insert 引起的GC overhead limit exceeded笔记

...,并不是sql程序的问题。那么最大的原因是我们给程序(mapreduce)的内存过小。那么先看下我们到底配置了多大的内存。在hive cli里执行下面命令: hive> set mapreduce.map.java.opts; mapreduce.map.java.opts=-Xmx1500m hive> set mapreduce.reduce.java.opts...

深入浅出Hadoop: 高效处理大数据

...为Hadoop主要由三部分组成:HDFS(Hadoop Distributed File System),MapReduce与Hbase。   1.Hadoop组件之一:HDFS分布式文件系统具有哪些优点?   HDFS作为一种分布式文件系统,它和现有的分布式文件系统有很多共同点。比如,Hadoop文件...

从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)

从hadoop框架与MapReduce模式中谈海量数据处理前言    几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,觉得它们很是神秘,而神秘的东西常能勾起我的兴趣,在看过介绍它们的文章或论文之...

大数据时代之hadoop(二):hadoop脚本解析

... run a cluster balancing utility" echo " jobtracker run the MapReduce job Tracker node" echo " pipes run a Pipes job" echo " tasktracker run a MapReduce task Tracker node" echo " job manipulate MapReduce jobs" echo " queue ...

前三篇
后三篇
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备