在Hive中选择前2行

33
我正在尝试根据Hive(版本0.11)中的薪水信息,从员工列表中检索前2个表格。由于它不支持TOP函数,是否有其他替代方案?或者我们需要定义一个UDF吗?
3个回答

73

是的,在这里你可以使用 LIMIT 关键字。

你可以尝试以下查询:

SELECT * FROM employee_list SORT BY salary DESC LIMIT 2

1
@Akshay,它可以工作了,我猜你在结尾处漏掉了分号。 - prashanth
2
为什么要使用排序,而不是使用按顺序排列? - Ashish Doneriya

4

这里我认为值得提到的是SORT BYORDER 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子句来避免任何数据丢失,适用于一般情况。


3
select * from employee_list order by salary desc limit 2;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接