Hive Join&排序】如何理解Hive 排序中的sortBy和orderBy

2020-05-22 09:10发布

1条回答
小冰块儿
2楼 · 2020-05-22 09:14

Hive基于HADOOP来执行分布式程序的,和普通单机程序不同的一个特点就是最终的数据会产生多个子文件,每个reducer节点都会处理partition给自己的那份数据产生结果文件,这导致了在HADOOP环境下很难对数据进行全局排序,如果在HADOOP上进行order by全排序,会导致所有的数据集中在一台reducer节点上,然后进行排序,这样很可能会超过单个节点的磁盘和内存存储能力导致任务失败。一种替代的方案则是放弃全局有序,而是e799bee5baa6e997aee7ad94e4b893e5b19e31333337616565分组有序,比如不求全百度最高的点击词排序,而是求每种产品线的最高点击词排序。使用order by会引发全局排序select * from baidu_click order by click desc;
使用distribute和sort进行分组排序
select * from baidu_click distribute by product_line sort by click desc;
distribute by + sort by就是该替代方案,被distribute by设定的字段为KEY,数据会被HASH分发到不同的reducer机器上,然后sort by会对同一个reducer机器上的每组数据进行局部排序。

相关问题推荐

  • 回答 3

    MySQL由于自身简单、高效、可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,MySQL的相关操作会变的非常迟缓;如果这时还有实时BI展示的需求,对于mysql来说是一种灾难。为了解决sql查询慢,查不了的业务痛点,我们探索出一...

没有解决我的问题,去提问