• 【Hive】Order by、Sort by、Distribute by和Cluster by


    1 Order by

    Hive中的Order by语句和其他的SQL中定义的一样,其会对查询结果集执行一个全局排序,即会有一个所有的数据都通过一个reducer进行处理的过程。对于大数据集,这个过程可能会消耗太多的时间来执行。

    2 Sort by

    对于使用Order by进行全局排序的操作,Hive增加了一个可供选择的方式,就是Sort by,其只会在每个reducer中对数据进行排序,即执行一个局部排序的过程,这可以保证在每个reducer的输出数据都是有序的(但并非全局排序),这样可以提高后面进行的全局排序的效率。

    3 Distribute by

    Distribute by控制map的输出在reducer中是如何划分的,MapReduce job中传输的所有数据都是按照键-值对的方式进行组织的,因此,Hive在将用户的查询语句转换成MapReduce job时,其必须在内部使用这个功能。

    默认情况下,MapReduce计算框架会依据map输入的键计算相应的哈希值,然后按照得到的哈希值将键-值对均匀分发到多个reducer中去。不过不幸的是,这也就意味着当使用Sort by时,不同的reducer的输出内容会有明显的重叠,至少对于排列顺序而言是这样的,即使每个reducer的输出的数据都是有序的。

    4 Cluster by

    是Distribute by和Sort by 的结合。



  • 相关阅读:
    Django框架基础之序列化
    资产采集
    CMDB
    数据库--三层架构
    Django 项目一补充
    评论楼
    图片预览
    验证码
    如何使用C/C++动态库与静态库中的宏
    Matlab 直线方程、采样函数
  • 原文地址:https://www.cnblogs.com/alen-liu-sz/p/12975625.html
Copyright © 2020-2023  润新知