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


  • 相关阅读:
    PAT A1060——string的常见用法详解
    题解-ZJOI2015地震后的幻想乡
    题解-富有物理组的风采
    题解-概率计算器
    题解-CodeForces835F Roads in the Kingdom
    题解-hdu2866 Special Prime
    题解-poj3682King Arthur's Birthday Celebration
    题解-拉格朗日(bzoj3695变种)
    题解-ZeroJudge-c686 高斯符號
    其他-几道物理题
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3065899.html
Copyright © 2011-2022 走看看