zoukankan      html  css  js  c++  java
  • MapReduce的排序与分区

    一、排序:按照key2进行排序
    1、数字的排序
    2、字符串的排序
    3、对象的排序: 实现WritableComparable接口 (1)序列化 (2)可被排序

        员工数据 Employee.java  ----> 作为key2输出
    	复习SQL:order by 后面 +  列名、表达式、别名、序号  desc
    	         desc 只作用于离他最近的一个列
    			      order by a desc,b desc
    				  
    	(1)一个列的排序
    	(2)多个列的排序
    

    二、分区:Partition: 根据Map的输出(k2 v2)进行分区
    1、默认情况下,MapReduce只有一个分区(只有一个输出文件)
    2、什么是分区?(重要)
    3、举例:Demo: 按照员工的部门号进行分区,相同部门号的员工输出到一个分区中
    日志:
    17/12/18 21:47:24 INFO mapreduce.Job: map 100% reduce 0%
    17/12/18 21:47:49 INFO mapreduce.Job: map 100% reduce 33%
    17/12/18 21:47:55 INFO mapreduce.Job: map 100% reduce 67%
    17/12/18 21:47:56 INFO mapreduce.Job: map 100% reduce 100%

    三、合并:Combiner
    1、MapReduce的任务中,可以没有Combiner
    2、Combiner是一种特殊的Reducer,是在Mapper端先做一次Reducer,用来减少Map的输出,从而提高的效率。
    3、注意事项:
    (1)有些情况,不能使用Combiner -----> 求平均值

    	(2)引入Combiner,不引人Combiner,一定不能改变原理的逻辑。(MapReduce编程案例:实现倒排索引)
    
    错误:
    Error: java.io.IOException: wrong value class: class org.apache.hadoop.io.DoubleWritable is not class org.apache.hadoop.io.IntWritable
  • 相关阅读:
    Java程序设计之算出一年第多少天
    Java程序设计之打印100~999的水仙花数
    AJAX提交方法(POST)Demon
    AJAX提交方法(GET)Demon
    java程序设计线程池(newCachedThreadPool())
    java线程池(newSingleThreadExecutor())小应用
    Java程序设计之线程池应用
    java程序设计之反弹高度
    java程序设计之完数
    iOS UIView 基本属性用法
  • 原文地址:https://www.cnblogs.com/notes-study/p/8435742.html
Copyright © 2011-2022 走看看