hiveql - 何时在 hive QL 中使用 sort By 子句
问题描述
我检查了 hive 中 sort by 与 order by 子句之间的区别。当需要总排序时使用排序依据,而当有多个减速器和输入到减速器需要按排序顺序时使用排序依据。因此,如果只有一个减速器,排序方式可能会导致全序;如果有多个减速器,则排序可能会导致部分排序-
参考 - https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy
我的问题是我们什么时候需要在 hiveQL 中使用 sort by 子句?
解决方案
当对数据进行排序时,连接会更快,因为优化器知道数据是按特定顺序排序的,并且在该值之后它需要停止查找所需的谓词选择(where 子句条件)。
案例 1 - 排序方式
现在,如果您在给定字段中的数据具有特定顺序,或者您的选择查询需要特定顺序的数据,例如员工按薪水排序(即按薪水和乐队排序)或根据加入日期对员工排序(即按加入日期排序)
那么您需要使用 order by 子句保存数据/结果(以获取总订单)并且我们需要使用 order by(薪水),以便无论何时查询目标数据,您都可以默认获取所需的有序数据。
案例 2 - 排序方式
如果给定字段中的数据不需要特定顺序,例如唯一生成的字母数字字段,例如 Customer_id
在这种情况下,逻辑上最终数据不需要根据 customer_id 以特定顺序出现,但由于它是唯一键且主要用于加入,因此当我们将客户交易详细信息的数据存储在每个分区中时,它需要以排序 /有序的方式使连接更快。因此,在这种情况下,我们在存储最终结果时使用 sort by (customer_id)。
推荐阅读
- swift - 如何在数组中的子元素范围内实现就地排序
迅速? - javascript - Javascript通过具有相同字段但在内存中不同的键对象访问map的值
- c# - 我可以在 C# 7 中定义与 C# 8 beta 兼容的索引器吗?
- python - AWS lambda 内存使用情况与 python 代码中的临时文件
- c++-winrt - 在 UWP 应用中,html 资源应该存储在 assets 目录中的什么位置?
- haskell - 为什么`and`对于空的可折叠返回True,但`or`在Haskell中返回False?
- python - 向 Folium 地图添加标记
- php - 具有相同值的不同变量会影响另一个变量
- python - 如何限制在for循环中填充数据框的行数
- matlab - 更改 regionprops 方向范围