MapReduce编程系列 — 3:数据去重
1、项目名称:
2、程序代码:
package com.dedup; import java.io.IOException;
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 Dedup {
//map将输入中的value复制到输出数据的key上,并直接输出,注意参数类型和个数
public static class Map extends Mapper<Object, Text, Text, Text>{
public static Text line = new Text();
//注意参数类型和个数
public void map(Object key , Text value , Context context) throws IOException,InterruptedException{
System.out.println("mapper.......");
System.out.println("key:"+key+" value:"+value);
line = value;
context.write(line, new Text(" "));
System.out.println("line:"+ line +" value"+ value +" context:" + context);
}
}
//reduce将输入中的key复制到输出数据的key上,并直接输出,注意参数类型和个数
public static class Reduce extends Reducer<Text, Text, Text, Text>{
//注意参数类型和个数
public void reduce(Text key , Iterable<Text> values, Context context)throws IOException,InterruptedException{
System.out.println("reducer.......");
System.out.println("key:"+key+" values:"+values);
context.write(key, new Text(" "));
System.out.println("key:"+key+" values"+values+" context:"+context);
}
} public static void main(String [] args)throws Exception{
Configuration conf = new Configuration();
String otherArgs[] = new GenericOptionsParser(conf,args).getRemainingArgs();
if(otherArgs.length!=2){
System.out.println("Usage:dedup <in> <out>");
System.exit(2);
}
Job job = new Job(conf,"Data Deduplication");
job.setJarByClass(Dedup.class); job.setMapperClass(Map.class);
job.setReducerClass(Reduce.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、测试数据:
2006-6-10 b
2006-6-11 c
2006-6-12 d
2006-6-13 a
2006-6-14 b
2006-6-15 c
2006-6-11 c
2006-6-10 a
2006-6-11 b
2006-6-12 d
2006-6-13 a
2006-6-14 c
2006-6-15 d
2006-6-11 c
14/09/21 16:51:16 WARN mapred.JobClient: No job jar file set. User classes may not be found. See JobConf(Class) or JobConf#setJar(String).
14/09/21 16:51:16 INFO input.FileInputFormat: Total input paths to process : 2
14/09/21 16:51:16 WARN snappy.LoadSnappy: Snappy native library not loaded
14/09/21 16:51:16 INFO mapred.JobClient: Running job: job_local_0001
14/09/21 16:51:16 INFO util.ProcessTree: setsid exited with exit code 0
14/09/21 16:51:16 INFO mapred.Task: Using ResourceCalculatorPlugin : org.apache.hadoop.util.LinuxResourceCalculatorPlugin@2e9aa770
14/09/21 16:51:16 INFO mapred.MapTask: io.sort.mb = 100
14/09/21 16:51:16 INFO mapred.MapTask: data buffer = 79691776/99614720
14/09/21 16:51:16 INFO mapred.MapTask: record buffer = 262144/327680
mapper.......
key:0 value:2006-6-9 a
line:2006-6-9 a value2006-6-9 a context:org.apache.hadoop.mapreduce.Mapper$Context@2d3b0087
mapper.......
key:11 value:2006-6-10 b
line:2006-6-10 b value2006-6-10 b context:org.apache.hadoop.mapreduce.Mapper$Context@2d3b0087
mapper.......
key:23 value:2006-6-11 c
line:2006-6-11 c value2006-6-11 c context:org.apache.hadoop.mapreduce.Mapper$Context@2d3b0087
mapper.......
key:35 value:2006-6-12 d
line:2006-6-12 d value2006-6-12 d context:org.apache.hadoop.mapreduce.Mapper$Context@2d3b0087
mapper.......
key:47 value:2006-6-13 a
line:2006-6-13 a value2006-6-13 a context:org.apache.hadoop.mapreduce.Mapper$Context@2d3b0087
mapper.......
key:59 value:2006-6-14 b
line:2006-6-14 b value2006-6-14 b context:org.apache.hadoop.mapreduce.Mapper$Context@2d3b0087
mapper.......
key:71 value:2006-6-15 c
line:2006-6-15 c value2006-6-15 c context:org.apache.hadoop.mapreduce.Mapper$Context@2d3b0087
mapper.......
key:83 value:2006-6-11 c
line:2006-6-11 c value2006-6-11 c context:org.apache.hadoop.mapreduce.Mapper$Context@2d3b0087
14/09/21 16:51:16 INFO mapred.MapTask: Starting flush of map output
14/09/21 16:51:16 INFO mapred.MapTask: Finished spill 0
14/09/21 16:51:16 INFO mapred.Task: Task:attempt_local_0001_m_000000_0 is done. And is in the process of commiting
14/09/21 16:51:17 INFO mapred.JobClient: map 0% reduce 0%
14/09/21 16:51:19 INFO mapred.LocalJobRunner:
14/09/21 16:51:19 INFO mapred.Task: Task 'attempt_local_0001_m_000000_0' done.
14/09/21 16:51:19 INFO mapred.Task: Using ResourceCalculatorPlugin : org.apache.hadoop.util.LinuxResourceCalculatorPlugin@3697e580
14/09/21 16:51:19 INFO mapred.MapTask: io.sort.mb = 100
14/09/21 16:51:19 INFO mapred.MapTask: data buffer = 79691776/99614720
14/09/21 16:51:19 INFO mapred.MapTask: record buffer = 262144/327680
mapper.......
key:0 value:2006-6-9 b
line:2006-6-9 b value2006-6-9 b context:org.apache.hadoop.mapreduce.Mapper$Context@319af5dd
mapper.......
key:11 value:2006-6-10 a
line:2006-6-10 a value2006-6-10 a context:org.apache.hadoop.mapreduce.Mapper$Context@319af5dd
mapper.......
key:23 value:2006-6-11 b
line:2006-6-11 b value2006-6-11 b context:org.apache.hadoop.mapreduce.Mapper$Context@319af5dd
mapper.......
key:35 value:2006-6-12 d
line:2006-6-12 d value2006-6-12 d context:org.apache.hadoop.mapreduce.Mapper$Context@319af5dd
mapper.......
key:47 value:2006-6-13 a
line:2006-6-13 a value2006-6-13 a context:org.apache.hadoop.mapreduce.Mapper$Context@319af5dd
mapper.......
key:59 value:2006-6-14 c
line:2006-6-14 c value2006-6-14 c context:org.apache.hadoop.mapreduce.Mapper$Context@319af5dd
mapper.......
key:71 value:2006-6-15 d
line:2006-6-15 d value2006-6-15 d context:org.apache.hadoop.mapreduce.Mapper$Context@319af5dd
mapper.......
key:83 value:2006-6-11 c
line:2006-6-11 c value2006-6-11 c context:org.apache.hadoop.mapreduce.Mapper$Context@319af5dd
14/09/21 16:51:19 INFO mapred.MapTask: Starting flush of map output
14/09/21 16:51:19 INFO mapred.MapTask: Finished spill 0
14/09/21 16:51:19 INFO mapred.Task: Task:attempt_local_0001_m_000001_0 is done. And is in the process of commiting
14/09/21 16:51:20 INFO mapred.JobClient: map 100% reduce 0%
14/09/21 16:51:22 INFO mapred.LocalJobRunner:
14/09/21 16:51:22 INFO mapred.Task: Task 'attempt_local_0001_m_000001_0' done.
14/09/21 16:51:22 INFO mapred.Task: Using ResourceCalculatorPlugin : org.apache.hadoop.util.LinuxResourceCalculatorPlugin@3c844c07
14/09/21 16:51:22 INFO mapred.LocalJobRunner:
14/09/21 16:51:22 INFO mapred.Merger: Merging 2 sorted segments
14/09/21 16:51:22 INFO mapred.Merger: Down to the last merge-pass, with 2 segments left of total size: 258 bytes
14/09/21 16:51:22 INFO mapred.LocalJobRunner:
reducer.......
key:2006-6-10 a values:org.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78
key:2006-6-10 a valuesorg.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78 context:org.apache.hadoop.mapreduce.Reducer$Context@52767ce8
reducer.......
key:2006-6-10 b values:org.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78
key:2006-6-10 b valuesorg.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78 context:org.apache.hadoop.mapreduce.Reducer$Context@52767ce8
reducer.......
key:2006-6-11 b values:org.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78
key:2006-6-11 b valuesorg.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78 context:org.apache.hadoop.mapreduce.Reducer$Context@52767ce8
reducer.......
key:2006-6-11 c values:org.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78
key:2006-6-11 c valuesorg.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78 context:org.apache.hadoop.mapreduce.Reducer$Context@52767ce8
reducer.......
key:2006-6-12 d values:org.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78
key:2006-6-12 d valuesorg.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78 context:org.apache.hadoop.mapreduce.Reducer$Context@52767ce8
reducer.......
key:2006-6-13 a values:org.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78
key:2006-6-13 a valuesorg.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78 context:org.apache.hadoop.mapreduce.Reducer$Context@52767ce8
reducer.......
key:2006-6-14 b values:org.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78
key:2006-6-14 b valuesorg.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78 context:org.apache.hadoop.mapreduce.Reducer$Context@52767ce8
reducer.......
key:2006-6-14 c values:org.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78
key:2006-6-14 c valuesorg.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78 context:org.apache.hadoop.mapreduce.Reducer$Context@52767ce8
reducer.......
key:2006-6-15 c values:org.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78
key:2006-6-15 c valuesorg.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78 context:org.apache.hadoop.mapreduce.Reducer$Context@52767ce8
reducer.......
key:2006-6-15 d values:org.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78
key:2006-6-15 d valuesorg.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78 context:org.apache.hadoop.mapreduce.Reducer$Context@52767ce8
reducer.......
key:2006-6-9 a values:org.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78
key:2006-6-9 a valuesorg.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78 context:org.apache.hadoop.mapreduce.Reducer$Context@52767ce8
reducer.......
key:2006-6-9 b values:org.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78
key:2006-6-9 b valuesorg.apache.hadoop.mapreduce.ReduceContext$ValueIterable@9c8fd78 context:org.apache.hadoop.mapreduce.Reducer$Context@52767ce8
14/09/21 16:51:22 INFO mapred.Task: Task:attempt_local_0001_r_000000_0 is done. And is in the process of commiting
14/09/21 16:51:22 INFO mapred.LocalJobRunner:
14/09/21 16:51:22 INFO mapred.Task: Task attempt_local_0001_r_000000_0 is allowed to commit now
14/09/21 16:51:22 INFO output.FileOutputCommitter: Saved output of task 'attempt_local_0001_r_000000_0' to hdfs://localhost:9000/user/hadoop/dedup_output
14/09/21 16:51:25 INFO mapred.LocalJobRunner: reduce > reduce
14/09/21 16:51:25 INFO mapred.Task: Task 'attempt_local_0001_r_000000_0' done.
14/09/21 16:51:26 INFO mapred.JobClient: map 100% reduce 100%
14/09/21 16:51:26 INFO mapred.JobClient: Job complete: job_local_0001
14/09/21 16:51:26 INFO mapred.JobClient: Counters: 22
14/09/21 16:51:26 INFO mapred.JobClient: Map-Reduce Framework
14/09/21 16:51:26 INFO mapred.JobClient: Spilled Records=32
14/09/21 16:51:26 INFO mapred.JobClient: Map output materialized bytes=266
14/09/21 16:51:26 INFO mapred.JobClient: Reduce input records=16
14/09/21 16:51:26 INFO mapred.JobClient: Virtual memory (bytes) snapshot=0
14/09/21 16:51:26 INFO mapred.JobClient: Map input records=16
14/09/21 16:51:26 INFO mapred.JobClient: SPLIT_RAW_BYTES=232
14/09/21 16:51:26 INFO mapred.JobClient: Map output bytes=222
14/09/21 16:51:26 INFO mapred.JobClient: Reduce shuffle bytes=0
14/09/21 16:51:26 INFO mapred.JobClient: Physical memory (bytes) snapshot=0
14/09/21 16:51:26 INFO mapred.JobClient: Reduce input groups=12
14/09/21 16:51:26 INFO mapred.JobClient: Combine output records=0
14/09/21 16:51:26 INFO mapred.JobClient: Reduce output records=12
14/09/21 16:51:26 INFO mapred.JobClient: Map output records=16
14/09/21 16:51:26 INFO mapred.JobClient: Combine input records=0
14/09/21 16:51:26 INFO mapred.JobClient: CPU time spent (ms)=0
14/09/21 16:51:26 INFO mapred.JobClient: Total committed heap usage (bytes)=813170688
14/09/21 16:51:26 INFO mapred.JobClient: File Input Format Counters
14/09/21 16:51:26 INFO mapred.JobClient: Bytes Read=190
14/09/21 16:51:26 INFO mapred.JobClient: FileSystemCounters
14/09/21 16:51:26 INFO mapred.JobClient: HDFS_BYTES_READ=475
14/09/21 16:51:26 INFO mapred.JobClient: FILE_BYTES_WRITTEN=122061
14/09/21 16:51:26 INFO mapred.JobClient: FILE_BYTES_READ=1665
14/09/21 16:51:26 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=166
14/09/21 16:51:26 INFO mapred.JobClient: File Output Format Counters
14/09/21 16:51:26 INFO mapred.JobClient: Bytes Written=166
2006-6-10 b
2006-6-11 b
2006-6-11 c
2006-6-12 d
2006-6-13 a
2006-6-14 b
2006-6-14 c
2006-6-15 c
2006-6-15 d
2006-6-9 a
2006-6-9 b
MapReduce编程系列 — 3:数据去重的更多相关文章
- [Python] 文科生零基础学编程系列三——数据运算符的基本类别
上一篇:[Python] 文科生零基础学编程系列二--数据类型.变量.常量的基础概念 下一篇: ※ 程序的执行过程,就是对数据进行运算的过程. 不同的数据类型,可以进行不同的运算, 按照数据运算类型的 ...
- 学习ASP.NET Core Blazor编程系列八——数据校验
学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...
- 【原创】MapReduce编程系列之二元排序
普通排序实现 普通排序的实现利用了按姓名的排序,调用了默认的对key的HashPartition函数来实现数据的分组.partition操作之后写入磁盘时会对数据进行排序操作(对一个分区内的数据作排序 ...
- MapReduce编程系列 — 5:单表关联
1.项目名称: 2.项目数据: chile parentTom LucyTom JackJone LucyJone JackLucy MaryLucy Ben ...
- MapReduce编程系列 — 2:计算平均分
1.项目名称: 2.程序代码: package com.averagescorecount; import java.io.IOException; import java.util.Iterator ...
- 【原创】MapReduce编程系列之表连接
问题描述 需要连接的表如下:其中左边是child,右边是parent,我们要做的是找出grandchild和grandparent的对应关系,为此需要进行表的连接. Tom Lucy Tom Jim ...
- MapReduce编程系列 — 6:多表关联
1.项目名称: 2.程序代码: 版本一(详细版): package com.mtjoin; import java.io.IOException; import java.util.Iterator; ...
- MapReduce编程系列 — 4:排序
1.项目名称: 2.程序代码: package com.sort; import java.io.IOException; import org.apache.hadoop.conf.Configur ...
- MapReduce编程系列 — 1:计算单词
1.代码: package com.mrdemo; import java.io.IOException; import java.util.StringTokenizer; import org.a ...
随机推荐
- 删除vim-minimal导致sudo不可用
Ok, if anyone ends up in a similar situation, you can use pkexec yum install sudo. pkexec will let y ...
- 利用HibernateTools从数据库表生成带注解的POJO
在SSH框架中,如果先设计好了数据库,那么下一步就需要从数据库Table生成实体java类和hbm.xml配置文件.在最新的开发框架中,已经支持使用注解,从而避免了繁琐的hbm.xml配置,而且我们可 ...
- String.Format数字格式化输出 {0:N2} {0:D2} {0:C2
//格式为sring输出 // Label1.Text = string.Format("asdfadsf{0}adsfasdf",a); // Label2.Text = ...
- firefox ie chrome 设置单元格宽度 td width 有bug,不能正常工作。以下方式可以解决
1. firefox ie chrome 设置单元格宽度 td width 有bug,不能正常工作. 如果是上面一行 和下面一行是分别属于两个table,但是他们的列需要对齐,也就是说分开画的,然后设 ...
- AngularJS(7)-表格
ng-repeat 指令可以完美的显示表格. <!DOCTYPE html> <html lang="en"> <head> <meta ...
- Pandas简易入门(二)
目录: 处理缺失数据 制作透视图 删除含空数据的行和列 多行索引 使用apply函数 本节主要介绍如何处理缺失的数据,可以参考原文:https://www. ...
- Natural Language Processing with Python - Chapter 0
一年之前,我做梦也想不到会来这里写技术总结.误打误撞来到了上海西南某高校,成为了文科专业的工科男,现在每天除了膜ha,就是恶补CS.导师是做计算语言学的,所以当务之急就是先自学计算机自然语言处理,打好 ...
- 利用PHPRPC以及SOAP分别实现PHP的Webserver功能
服务端:phprpc服务端 <?php /* phprpc 服务端演示 * time:2014-06-23 */ require_once 'phprpc_server.php';//引入服务端 ...
- 传统ASP.NET开发和MVC的设计思想
传统ASP.NET开发 第一步:客户端请求服务器: 第二步:服务器从数据库取得数据处理后响应给客户端页面. MVC的设计思想 第一步:客户端请求控制器(里面的一个方法): 第二步:控制器从数据库里取得 ...
- ios 下引用第三方类库报错
在最近刚接触的ios的一个项目中用到了腾讯的登录sdk,从git下下来之后编译报错,找不到文件,文件明明已经加入到项目中,为何找不到,由于刚接触ios开发,所有不知道什么原因,经过Google才知道 ...