首页 > 解决方案 > 何时在 hive QL 中使用 sort By 子句

问题描述

我检查了 hive 中 sort by 与 order by 子句之间的区别。当需要总排序时使用排序依据,而当有多个减速器和输入到减速器需要按排序顺序时使用排序依据。因此,如果只有一个减速器,排序方式可能会导致全序;如果有多个减速器,则排序可能会导致部分排序-

参考 - https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy

我的问题是我们什么时候需要在 hiveQL 中使用 sort by 子句?

标签: hiveql

解决方案


当对数据进行排序时,连接会更快,因为优化器知道数据是按特定顺序排序的,并且在该值之后它需要停止查找所需的谓词选择(where 子句条件)。

案例 1 - 排序方式

现在,如果您在给定字段中的数据具有特定顺序,或者您的选择查询需要特定顺序的数据,例如员工按薪水排序(即按薪水和乐队排序)或根据加入日期对员工排序(即按加入日期排序)

那么您需要使用 order by 子句保存数据/结果(以获取总订单)并且我们需要使用 order by(薪水),以便无论何时查询目标数据,您都可以默认获取所需的有序数据。

案例 2 - 排序方式

如果给定字段中的数据不需要特定顺序,例如唯一生成的字母数字字段,例如 Customer_id

在这种情况下,逻辑上最终数据不需要根据 customer_id 以特定顺序出现,但由于它是唯一键且主要用于加入,因此当我们将客户交易详细信息的数据存储在每个分区中时,它需要以排序 /有序的方式使连接更快。因此,在这种情况下,我们在存储最终结果时使用 sort by (customer_id)。


推荐阅读