hive的 order by & distribute by & cluter by
我们应该都清楚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的个数小于分区数则会报错)
说明:
- 类似于mr中的分区,要用多个reducer处理,最终输出多个文件结果
- 当分区字段和排序字段不同的时候使用,需和sort by结合
- cluster by
当ditribute by ...sort by的字段是同一个字段时,可以用cluster by 代替。
但是cluster by的排序只支持倒序,不能指定asc或desc。
hive的 order by & distribute by & cluter by的更多相关文章
- [转]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 ...
- Hive中order by,sort by,distribute by,cluster by的区别
一:order by order by会对输入做全局排序,因此只有一个Reducer(多个Reducer无法保证全局有序),然而只有一个Reducer,会导致当输入规模较大时,消耗较长的计算时间.关于 ...
- hive中order by、distribute by、sort by和cluster by的区别和联系
hive中order by.distribute by.sort by和cluster by的区别和联系 order by order by 会对数据进行全局排序,和oracle和mysql等数据库中 ...
- hive中order by,sort by, distribute by, cluster by作用以及用法
1. order by Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的 ...
- hive 排序 order by sort by distribute by cluster by
order by: order by是全局排序,受hive.mapred.mode的影响. 使用orderby有一些限制: 1.在严格模式下(hive.mapred.mod ...
- [转载]hive中order by,sort by, distribute by, cluster by作用以及用法
1. order by Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的 ...
- hive中order by,sort by, distribute by, cluster by的用法
1.order by hive中的order by 和传统sql中的order by 一样,对数据做全局排序,加上排序,会新启动一个job进行排序,会把所有数据放到同一个reduce中进行处理,不管数 ...
- Hive之Order,Sort,Cluster and Distribute By
测试数据 create table sort_test( id int, name string ) row format delimited fields terminated by '\t' li ...
- hive中order by ,sort by ,distribute by, cluster by 的区别(**很详细**)
hive 查询语法 select [all | distinct] select_ condition, select_ condition from table_name a [join table ...
随机推荐
- IDEA 调整 VM 配置文件(64位)
64 位操作系统中 8G 内存以下的机子或是静态页面开发者是无需修改的. 64 位操作系统且内存大于 8G 的, 如果你是开发大型项目. Java 项目或是 Android 项目,建议进行修改 . 1 ...
- (O)JS:执行环境、变量对象、活动对象和作用域链(原创)
var a=1; function b(x){ var c=2; console.log(x); } b(3); ·执行环境(execution context),也称为环境.执行上下文.上下文环境. ...
- js的日期格式判断
var reg = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/; var str = (new Date).toLocaleString() ...
- imaplib.error: command: SEARCH => got more than 10000 bytes
imaplib.error: command: SEARCH => got more than 10000 bytes 使用IMAPLIB进行标记邮件状态的时候,在 typ,data=M.sea ...
- Codeforces 791B. Bear and Friendship Condition 联通快 完全图
B. Bear and Friendship Condition time limit per test:1 second memory limit per test:256 megabytes in ...
- Hotspot参数分析
-XX:+HeapDumpOnOutOfMemoryError 让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便事后进行分析 -Xmx与-Xms 虚拟机堆参数 -Xoss 设置本地方法栈 ...
- mfc获取exe的版本信息
CString GetFileVersion(const CString& sTargetFileName){ DWORD nInfoSize = 0, dwHandle = 0; nInfo ...
- 20165213 java学习第一周
20165213 -2018-2<Java程序设计>第一周学习总结 教材学习内容总结 java的四个特点:面向对象.平台无关性.动态性.简单. java编写程序步骤:再有jdk的情况下,先 ...
- [规则原则定理]规则原则定理章2ACID原则
ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(T ...
- 使用JavaScript实现表现和数据分离
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8&quo ...