我们应该都清楚order by 的含义:

根据某个字段对输出的数据排序,因为只有一个reducer,所以查询效率较慢。

那么hive中,另外两个排序,distribute by和cluster by的含义是什么呢?

  • distribute by 分区排序

直接上例子,hive中有张工资表:salary,字段是部门id--department_id,姓名--name,薪水--salary

department_id

name salary
1 张三 3500
2 李一 2800
1 王五 5000
2 赵六 6000

我们想要按部门分区,再按部门中员工工资由高到低排序:

select * from salary distribute by department_id sort by salary;

department_id

name salary
1 张三 3500
1 王五 5000
2 李一 2800
2 赵六 6000

可以看到结果按部门做了分区,每个部门数据按薪水做了排序。

观察数据的话,每个文件中存储了相同分区的数据。

因为每个分区使用一个reducer,所以设置的reducer个数应该大于等于结果的分区数,

不然会报错。

补充:

设置reducer个数的方法:

set mapreduce.job.reduces=-1;

设为默认值,系统分配reduce的个数。

设置好后检查一下:

set mapreduce.job.reduces;

(如果reducer的个数大于分区数会产生空文件,reducer的个数小于分区数则会报错)

说明:

  1. 类似于mr中的分区,要用多个reducer处理,最终输出多个文件结果
  2. 当分区字段和排序字段不同的时候使用,需和sort by结合
  • cluster by

当ditribute by ...sort by的字段是同一个字段时,可以用cluster by 代替。

但是cluster by的排序只支持倒序,不能指定asc或desc。

hive的 order by & distribute by & cluter by的更多相关文章

  1. [转]hive中order by,distribute by,sort by,cluster by

    转至http://my.oschina.net/repine/blog/296562 order by,distribute by,sort by,cluster by  查询使用说明 1 2 3 4 ...

  2. Hive中order by,sort by,distribute by,cluster by的区别

    一:order by order by会对输入做全局排序,因此只有一个Reducer(多个Reducer无法保证全局有序),然而只有一个Reducer,会导致当输入规模较大时,消耗较长的计算时间.关于 ...

  3. hive中order by、distribute by、sort by和cluster by的区别和联系

    hive中order by.distribute by.sort by和cluster by的区别和联系 order by order by 会对数据进行全局排序,和oracle和mysql等数据库中 ...

  4. hive中order by,sort by, distribute by, cluster by作用以及用法

    1. order by     Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的 ...

  5. hive 排序 order by sort by distribute by cluster by

    order by:     order by是全局排序,受hive.mapred.mode的影响.       使用orderby有一些限制:     1.在严格模式下(hive.mapred.mod ...

  6. [转载]hive中order by,sort by, distribute by, cluster by作用以及用法

    1. order by     Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的 ...

  7. hive中order by,sort by, distribute by, cluster by的用法

    1.order by hive中的order by 和传统sql中的order by 一样,对数据做全局排序,加上排序,会新启动一个job进行排序,会把所有数据放到同一个reduce中进行处理,不管数 ...

  8. Hive之Order,Sort,Cluster and Distribute By

    测试数据 create table sort_test( id int, name string ) row format delimited fields terminated by '\t' li ...

  9. hive中order by ,sort by ,distribute by, cluster by 的区别(**很详细**)

    hive 查询语法 select [all | distinct] select_ condition, select_ condition from table_name a [join table ...

随机推荐

  1. The 10 Best Choices On The Market Review 2018

    Looking to buy a scan tool or considering one of Autel Scanner impressive product line?. The company ...

  2. spring+mybatis+mina+logback框架搭建

    第一次接触spring,之前从来没有学过spring,所以算是赶鸭子上架,花了差不多一个星期来搭建,中间遇到各种各样的问题,一度觉得这个框架搭建非常麻烦,没有一点技术含量,纯粹就是配置,很低级!但随着 ...

  3. Luogu1070-道路游戏-动态规划

    Solution 用对角线的前缀和快速进行转移,复杂度$O(N^3)$, 洛谷神机太快了$N^3$都能过 然而正解是单调队列优化, 能优化到$O(N^2)$,然而我弱得什么都不会 Code #incl ...

  4. 含有选择器的 bootstrap菜单

    var menu = new BootstrapMenu('#jsmind_container jmnode:not(.root)', { actions: [{ name: '展开节点', onCl ...

  5. centos6.5上配置apache + mysql + php4.4.9 + eaccelerator-0.9.5 + postgresql-8.3.13 备忘

    1.apache + mysql 直接利用 yum 安装 yum -y install httpd httpd-devel mysql mysql-server httpd-manual mod_pe ...

  6. js值类型与引用类型

    JavaScript值类型和引用类型有哪些 (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数. 三.如何理解值类型和引用类型及举例 我们可以用“连锁店”和“ ...

  7. Android NDK定位.so文件crash代码位置

    参考:http://blog.csdn.net/xyang81/article/details/42319789 问题:      QRD8926_110202平台的Browser必现报错.(去年的项 ...

  8. SpringMVC学习笔记:单例与并发问题

    Spring中的Bean默认都是单例(singleton),Spring中Bean的scope属性有五种类型: singleton 表示在spring容器中的单例,通过spring容器获得该bean时 ...

  9. 阿里云help

    docker 技术的安全性问题,如果一个集群多个用户不希望互相可以看到对方的docker镜像和容器,怎么办? .... http://mirrors.aliyun.com/help/centos yu ...

  10. 682. Baseball Game

    static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...