我正在尝试根据Hive(版本0.11)中的薪水信息,从员工列表中检索前2个表格。由于它不支持TOP函数,是否有其他替代方案?或者我们需要定义一个UDF吗?
是的,在这里你可以使用 LIMIT
关键字。
你可以尝试以下查询:
SELECT * FROM employee_list SORT BY salary DESC LIMIT 2
这里我认为值得提到的是SORT BY
和ORDER BY
这两个子句以及它们的区别,
SELECT * FROM <table_name> SORT BY <column_name> DESC LIMIT 2
SORT BY
子句,它会按每个Reducer对数据进行排序,这意味着如果您有多个MapReduce任务,则会产生部分有序的数据。另一方面,ORDER BY
子句将为最终的Reduce任务生成有序数据。要了解更多信息,请参考此链接。SELECT * FROM <table_name> ORDER BY <column_name> DESC LIMIT 2
注意:最后,即使被接受的答案包含SORT BY
子句,我通常更倾向于使用ORDER BY
子句来避免任何数据丢失,适用于一般情况。
select * from employee_list order by salary desc limit 2;