• 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


  • 相关阅读:
    VMwareTools安装笔记
    Oracle常用命令(持续更新)
    window常用命令(持续更新)
    Oracle 中 sys和system帐号的区别
    决策树——排序算法的理论下界
    插入、选择、冒泡、梳排序性能比较
    插入、选择、冒泡排序的综述
    绝知此事要躬行之——插入排序
    Tree 和ls 的使用
    用户目录
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3065899.html
Copyright © 2020-2023  润新知