Hive中Order by和Sort by的区别是啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive中Order by和Sort by的区别是啥相关的知识,希望对你有一定的参考价值。
参考技术A Hive基于HADOOP来执行分布式程序的,和普通单机程序不同的一个特点就是最终的数据会产生多个子文件,每个reducer节点都会处理partition给自己的那份数据产生结果文件,这导致了在HADOOP环境下很难对数据进行全局排序,如果在HADOOP上进行orderby全排序,会导致所有的数据集中在一台reducer节点上,然后进行排序,这样很可能会超过单个节点的磁盘和内存存储能力导致任务失败。
一种替代的方案则是放弃全局有序,而是分组有序,比如不求全百度最高的点击词排序,而是求每种产品线的最高点击词排序。
使用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机器上的每组数据进行局部排序。
order
by是全局有序而distribute+sort是分组有序
distribute+sort的结果是按组有序而全局无序的,输入数据经过了以下两个步骤的处理:
1)
根据KEY字段被HASH,相同组的数据被分发到相同的reducer节点;
2)
对每个组内部做排序
由于每组数据是按KEY进行HASH后的存储并且组内有序,其还可以有两种用途:
1)
直接作为HBASE的输入源,导入到HBASE;
2)
在distribute+sort后再进行orderby阶段,实现间接的全局排序;
不过即使是先distribute
by然后sort
by这样的操作,如果某个分组数据太大也会超出reduce节点的存储限制,常常会出现137内存溢出的错误,对大数据量的排序都是应该避免的。
order by 和 sort by 的区别
【中文标题】order by 和 sort by 的区别【英文标题】:difference between order by and sort by 【发布时间】:2015-10-07 02:29:15 【问题描述】:sql
中是否有任何 sort by
代码替换 sql
查询中的 order by
【问题讨论】:
SQL Server 中没有sort by
。
请阅读How to Ask。提示:搜索和研究部分。
为什么要替换 order by
?
【参考方案1】:
SQL 中没有“排序依据”之类的东西。 ORDER BY
可让您确定结果集的排序顺序。
GROUP BY
意味着完全不同的东西。你应该阅读一下。
【讨论】:
【参考方案2】:是的,有。 如果您在 Spark 中使用 Hive 或 Spark SQL 等 SQL 接口,您将能够使用 SORT BY 或 ORDER BY。 ORDER BY 可以更好地处理数字,而 SORT BY 可以处理字符串。 问候。
【讨论】:
以上是关于Hive中Order by和Sort by的区别是啥的主要内容,如果未能解决你的问题,请参考以下文章
Hive中order by,sort by,distribute by,cluster by的区别
Hive中sort by,order by,cluster by,distribute by总结
hive order by sort by distribute by和sort by一起使用 cluster by
hive中order by,sort by, distribute by, cluster by的用法