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


  • 相关阅读:
    敏捷开发-各个原则的理解
    DWH中增量数据的抽取
    SSIS的部署和配置
    Checkpoint 和Breakpoint
    两种动态SQL
    SQLServer查询计划
    程序员接项目的经验1
    Date.prototype.format
    前端颜色选择器
    Idea快捷键和使用技巧【未完】
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3065899.html
Copyright © 2011-2022 走看看