zoukankan      html  css  js  c++  java
  • 【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 的结合。



  • 相关阅读:
    从左边或右边删除字符串-python 使用lstrip
    MapReduce- 学习9313第一节记录 材料源于百度百科
    138. (待解决)复制带随机指针的链表
    19. 删除链表的倒数第N个节点-链表(leetcode)
    347.前k个高频元素-counter(leetcode)
    python二进制、十进制、8进制、16进制转换(转)
    POJ 1715
    POJ 1306
    POJ 2436
    POJ 2249
  • 原文地址:https://www.cnblogs.com/alen-liu-sz/p/12975625.html
Copyright © 2011-2022 走看看