Hive 配置单元:如何通过排序方式获得全局排序

Hive 配置单元:如何通过排序方式获得全局排序,hive,sql-order-by,Hive,Sql Order By,orderby只有一个减速机,速度太慢了。我正在寻找一个快速的方法。sort by在每个减速机中排序,那么我们如何获得全局排序? 我是通过搜索引擎得到的: select * from (select title,cast(price as FLOAT) p from tablename distribute by time sort by p desc limit 10 ) t order by t.p desc limit 10; 然后尝试验证它。 1.在我的配置单元表中获

orderby
只有一个减速机,速度太慢了。我正在寻找一个快速的方法。
sort by
在每个减速机中排序,那么我们如何获得全局排序? 我是通过搜索引擎得到的:

select * from 
(select title,cast(price as FLOAT) p from tablename 
distribute by time 
sort by p desc 
limit 10 ) t 
order by t.p desc 
limit 10;   
然后尝试验证它。
1.在我的配置单元表中获得正确答案。名为tablename的表中有215666条记录

SELECT title,cast(price as FLOAT) p
from tablename 
WHERE dt='2020-03-08'
and price IS NOT NULL
ORDER BY p DESC
LIMIT 10
;
2.使用搜索的子句

set hive.execution.engine=mr;
set mapred.reduce.tasks=5; 
SELECT title,cast(price as FLOAT) p
from tablename
WHERE dt='2020-03-08'
and price IS NOT NULL
DISTRIBUTE BY title
SORT BY p desc
LIMIT 10
;
结果与正确答案相同! 以下是我的问题:
1.为什么只返回10行?共有5个减速器,每个减速器返回10个,应为5*10=50?
2.如果应该返回10行,为什么结果是全局排序?这条10线不是来自同一个减速器?是随机的,它不能在5个减速机中获得全局顺序。
3.如果应该返回10行,则搜索的子句中的外部部分是多余的

select * from 
(
) t 
order by t.p desc 
limit 10;   

考虑使用
total order partitioner
,有关详细信息,请参阅(只需忽略带有HBase的部分)