像这样使用蜂巢时:
select req_time from ncsa where req_time > 90 sort by req_time limt 100;
你会发现这个:</p>
958
952
951
97
96
96
959
957
956
955
955
953
95
94
92
我猜在mapps中日期分为几个部分,并按每个部分减少排序。
请告诉我如何解决这个问题?
像这样使用蜂巢时:
select req_time from ncsa where req_time > 90 sort by req_time limt 100;
你会发现这个:</p>
958
952
951
97
96
96
959
957
956
955
955
953
95
94
92
我猜在mapps中日期分为几个部分,并按每个部分减少排序。
请告诉我如何解决这个问题?
使用order by
而不是sort by
.
order by
和之间的区别在于sort by
前者保证输出中的总顺序,而后者只保证减速器中行的顺序。有关更多详细信息,请参阅hive 文档。
PS。确保req_time
是一个数字字段。
我将引用Hive cluster by vs order by vs sort by 的答案:
CLUSTER BY x
: 确保 N 个 reducer 中的每一个都获得不重叠的范围,然后在 reducer 上按这些范围进行排序。这为您提供全局排序,并且与执行 (DISTRIBUTE BY x
和SORT BY x
) 相同。您最终会得到 N 个或更多具有非重叠范围的排序文件。
所以CLUSTER BY
- 基本上是 ORDER BY 的更具可扩展性的版本。