Hive排序 cluster by column = distribute by column + sort by column
2016-09-20 15:54
363 查看
(1)对于order by,sort by:
我们可以使用limit进行限制返回的行数,从而实现抓出数据的top N的情形。
(2)对于distribute by:
sort by为每个reducer产生一个排序文件。在有些情况下,你需要控制某个特定行应该到哪个reducer,通常是为了进行后续的聚集操作。hive的distribute by就派上用场了:
select year, temperature
distribute by year
sort by year asc, temperature desc;
上面实现了局部排序,且规定了:根据年份和气温对气象数据进行排序,以确保所有具有相同年份的行最终都在一个reducer分区中(文件下),可以看出,distribute by经常与sort by一起使用。
需要注意的是,hive要求distribute by 要写在sort by之前。
(3)对于cluster by:
简而言之:cluster by column = distribute by column + sort by column (注意,都是针对column列,且采用默认ASC)
即对于上面例子:
From table
select year, temperature
cluster by year;
就等于:
From table
select year, temperature
distribute by year
sort by year;
当然这失去了按照气温排序的要求。
我们可以使用limit进行限制返回的行数,从而实现抓出数据的top N的情形。
(2)对于distribute by:
sort by为每个reducer产生一个排序文件。在有些情况下,你需要控制某个特定行应该到哪个reducer,通常是为了进行后续的聚集操作。hive的distribute by就派上用场了:
select year, temperature
distribute by year
sort by year asc, temperature desc;
上面实现了局部排序,且规定了:根据年份和气温对气象数据进行排序,以确保所有具有相同年份的行最终都在一个reducer分区中(文件下),可以看出,distribute by经常与sort by一起使用。
需要注意的是,hive要求distribute by 要写在sort by之前。
(3)对于cluster by:
简而言之:cluster by column = distribute by column + sort by column (注意,都是针对column列,且采用默认ASC)
即对于上面例子:
From table
select year, temperature
cluster by year;
就等于:
From table
select year, temperature
distribute by year
sort by year;
当然这失去了按照气温排序的要求。
相关文章推荐
- Citrix 6.5初始化失败
- LNMP架构的搭建(linux+nginx+mysql+php源码安装 )+Discuz论坛的搭建
- LeetCode #39. Combination Sum
- 图像处理方向常用网站
- 三,如何监控和解决SQL Server的阻塞(3) (扩展事件)
- C++_Primer_chapter18 7.2 volatile
- FLASH的读写
- 取数游戏-动态规划
- Qt--windows平台上如何获取qml中Camera的数据
- 九个Console命令,让js调试更简单
- c#学习笔记之Application.DoEvents应用
- php定界符
- 利用动态规划解决-字符串的匹配问题
- 【sdcard-common】KK版本如何去掉内置T卡
- 23种设计模式之桥梁模式
- 在线编程工具
- [置顶] Android View动画之——Tween动画
- 51Nod-1441-士兵的数字游戏
- Maven的pom.xml 配置详情(转载)
- nice Validator参考