zoukankan      html  css  js  c++  java
  • hadoop mapreduce数据排序

    有如下3个输入文件:

    file0

    2
    32
    654
    32
    15
    756
    65223


    file1

    5956
    22
    650
    92


    file2

    26
    54
    6


    由于reduce获得的key是按字典顺序排序的,利用默认的规则即可。

    // map将输入中的value化成IntWritable类型,作为输出的key
    	public static class Map extends
    			Mapper<Object, Text, IntWritable, IntWritable> {
    		
    		private static IntWritable data = new IntWritable();
    
    		// 实现map函数
    		public void map(Object key, Text value, Context context)
    				throws IOException, InterruptedException {
    			String line = value.toString();
    			data.set(Integer.parseInt(line));
    			context.write(data, new IntWritable(1));
    		}
    	}
    
    	// reduce将输入中的key复制到输出数据的key上,
    	// 然后根据输入的value-list中元素的个数决定key的输出次数
    	// 用全局linenum来代表key的位次
    	public static class Reduce extends
    			Reducer<IntWritable, IntWritable, IntWritable, IntWritable> {
    		private static IntWritable linenum = new IntWritable(1);
    
    		// 实现reduce函数
    		public void reduce(IntWritable key, Iterable<IntWritable> values,
    				Context context) throws IOException, InterruptedException {
    			for (IntWritable val : values) {
    				context.write(linenum, key);
    				linenum = new IntWritable(linenum.get() + 1);
    			}
    		}
    	}


    输出如下:

    1	2
    2	6
    3	15
    4	22
    5	26
    6	32
    7	32
    8	54
    9	92
    10	650
    11	654
    12	756
    13	5956
    14	65223


  • 相关阅读:
    hbase 学习笔记一---基本概念
    hdu 4496 (并差集)
    rqnoj-105-核电站问题-dp
    面试之BI-SQL--table转换
    Android:从程序员到架构师之路Ⅲ_高焕堂
    Linux 的进程组、会话、守护进程
    Oracle创建dblink报错:ORA-01017、ORA-02063解决
    JSP 指令
    JSP 生命周期
    JSP 结构
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3065899.html
Copyright © 2011-2022 走看看