我们应该都清楚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. (O)js核心:this

    什么是this this是js中的一个关键词,它总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境. 当函数被调用时,this被添加到作用域中,例如: ...

  2. Intellij idea 系列教程目录

    Intellij idea 系列教程目录 Intellij idea 系列教程之破解方法 Intellij idea 系列教程之常用快捷键 Intellij idea 系列教程之常用配置项 每天用心记 ...

  3. Python之路(第二十篇) subprocess模块

    一.subprocess模块 subprocess英文意思:子进程 那什么是进程呢? (一)关于进程的相关理论基础知识 进程是对正在运行程序的一个抽象,进程的概念起源于操作系统,是操作系统最核心的概念 ...

  4. Mockplus3.5.0.1新增标注功能

    Mockplus3.5.0.1版本中,新增了标注功能.多种标注模式,智能生成,随时查看.原型设计效率更高. Mockplus的标注功能有以下四种模式: 1.无选中标注 在未选中任何组件时,按住Ctrl ...

  5. js中的find(),filter(),has()的用法和区别

    filter():操作当前元素集,删除不匹配的元素,得到一个新的集合 <ul> <li class="a">list item 1</li> & ...

  6. 基于centos6.5 hadoop 集群搭建

    1.修改Linux主机名2.修改IP3.修改主机名和IP的映射关系 ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机.阿里云主机等) /etc/hosts里面要配置 ...

  7. 别人的Linux私房菜(1)计算机概论

    计算机主板 早期两个网桥控制通信,北桥连接速度比较快的CPU.内存.显卡.南桥连接较慢的接口,如硬盘,USB,网卡等.北桥的控制器集成到了CPU中. CPU工作频率 外频:CPU与外部组件进行数据传输 ...

  8. Java的GUI设计

    这里笔者写一些自己做GUI时候的心得,希望可以帮助需要学习的同学,函数的实现和界面设计不在同一个文件中,且涉及参数的传递 一.继承于JFrame   当遇到继承于JFrame的类的时候,可以省去建立对 ...

  9. test面板1

    Ext.onReady(function(){                var myPanel=new Ext.TabPanel({                    renderTo:Ex ...

  10. 用sql 生成2016年全年的日期

    select to_char(日期,'yyyy-mm-dd') from( select to_date('2016-01-01','yyyy-mm-dd') + level 日期 from dual ...