[转载]hive中order by,sort by, distribute by, cluster by作用以及用法
1. order by
2. sort by
Hive中指定了sort by,那么在每个reducer端都会做排序,也就是说保证了局部有序(每个reducer出来的数据是有序的,但是不能保证所有的数据是有序的,除非只有一个reducer),好处是:执行了局部排序之后可以为接下去的全局排序提高不少的效率(其实就是做一次归并排序就可以做到全局排序了)。
3. distribute by和sort by一起使用
ditribute by是控制map的输出在reducer是如何划分的,举个例子,我们有一张表,mid是指这个store所属的商户,money是这个商户的盈利,name是这个store的名字
store:
| mid | money | name | 
| AA | 15.0 | 商店1 | 
| AA | 20.0 | 商店2 | 
| BB | 22.0 | 商店3 | 
| CC | 44.0 | 商店4 | 
执行hive语句:
- select mid, money, name from store distribute by mid sort by mid asc, money asc - 我们所有的mid相同的数据会被送到同一个reducer去处理,这就是因为指定了distribute by mid,这样的话就可以统计出每个商户中各个商店盈利的排序了(这个肯定是全局有序的,因为相同的商户会放到同一个reducer去处理)。这里需要注意的是distribute by必须要写在sort by之前。 
4. cluster by
cluster by的功能就是distribute by和sort by相结合,如下2个语句是等价的:
- select mid, money, name from store cluster by mid
- select mid, money, name from store distribute by mid sort by mid
如果需要获得与3中语句一样的效果
- select mid, money, name from store cluster by mid sort by money
注意被cluster by指定的列只能是降序,不能指定asc和desc。
[转载]hive中order by,sort by, distribute by, cluster by作用以及用法的更多相关文章
- 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 by ,sort by ,distribute by, cluster by 的区别(**很详细**)
		hive 查询语法 select [all | distinct] select_ condition, select_ condition from table_name a [join table ... 
- hive 中 Order by, Sort by ,Dristribute by,Cluster By 的作用和用法
		order by order by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序) 只有一个reducer,会导致当输入规模较大时,需要较长的计算时间. set ... 
- hive 排序 order by sort by distribute by cluster by
		order by: order by是全局排序,受hive.mapred.mode的影响. 使用orderby有一些限制: 1.在严格模式下(hive.mapred.mod ... 
- hive中order by、distribute by、sort by和cluster by的区别和联系
		hive中order by.distribute by.sort by和cluster by的区别和联系 order by order by 会对数据进行全局排序,和oracle和mysql等数据库中 ... 
- 【转】python中List的sort方法(或者sorted内建函数)的用法
		原始出处:http://gaopenghigh.iteye.com/blog/1483864 python列表排序 简单记一下python中List的sort方法(或者sorted内建函数)的用法. ... 
- Hive中order by,sort by,distribute by,cluster by的区别
		一:order by order by会对输入做全局排序,因此只有一个Reducer(多个Reducer无法保证全局有序),然而只有一个Reducer,会导致当输入规模较大时,消耗较长的计算时间.关于 ... 
- Hadoop Hive 中的排序 Order by ,Sort by ,Distribute by以及 Cluster By
		order by order by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)只有一个reducer,会导致当输入规模较大时,需要较长的计算时间. set h ... 
随机推荐
- Doc/Docx/PDF to Html
			TODO 判断源文件是否有格式?? 
- kamctl start
			尽管没有吃饭,胃酸,九点半,,,还是挺高兴的.只截图不说话. 这个问题弄得我好烦啊.几个小时...网罗了国外几个论坛都没有解.我还没有想到这就不是问题,,,多试多试 再看看moni 也没什么意思,就是 ... 
- 安装vs2013要求重启后安装
			解决方案: 卸载360,然后杀毒, 重启电脑就可以直接安装vs了 
- Android中判断service是否在运行
			/** * 判断服务是否开启 * * @return */ public static boolean isServiceRunning(Context context, String Service ... 
- docker volumes?
			我发现我无法mount东西出来.都是会被host的覆盖掉的., 
- (转)Cobbler自动化部署最佳实践
			原文:http://www.xuliangwei.com/xubusi/446.html 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统, ... 
- Java常见的错误种类
			数组中的错误: 越界: java.lang.ArrayIndexOutOfBoundsException 数组越界,如果声明 了5个元素的数组,但是在取值的时候用到了索引5,那就越界了 空指针:jav ... 
- css3 appearance在iphone上面的问题
			最近在做项目的时候,发现iphone上中 <input type="button">在修改了css样式之后还是保留自带的一些属性,然后在安卓手机上不会出现这样的问题, ... 
- r.js 配置文件 example.build.js 不完整注释
			/* * This is an example build file that demonstrates how to use the build system for * require.js. * ... 
- 游戏开发者注意!这个音频SDK可以完美兼容所有主流游戏引擎
			欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云 发表于云+社区专栏 在网络游戏中,无论是大逃杀.棋牌类.电子竞技类还是娱乐休闲类小游戏,玩家和玩家之间的互动.语音聊天是一 ... 
