Hive中Order by和Sort by的区别是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive中Order by和Sort by的区别是啥相关的知识,希望对你有一定的参考价值。

参考技术A Hive基于HADOOP来执行分布式程序的,和普通单机程序不同的一个特点就是最终的数据会产生多个子文件,每个reducer节点都会处理partition给自己的那份数据产生结果文件,这导致了在HADOOP环境下很难对数据进行全局排序,如果在HADOOP上进行order
by全排序,会导致所有的数据集中在一台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的用法

hive 中 Order by, Sort by ,Dristribute by,Cluster By 的作用和用法

hive中order by,sort by, distribute by, cluster by作用以及用法