Select Hive 中的前 2 行

Select top 2 rows in Hive

我正在尝试根据 hive(版本 0.11)中的薪水从我的员工列表中检索前 2 个表。由于它不支持 TOP 功能,是否有其他选择?或者我们是否已经定义了一个 UDF?

是的,这里可以使用LIMIT

您可以通过以下查询进行尝试:

SELECT * FROM employee_list SORT BY salary DESC LIMIT 2
select * from employee_list order by salary desc limit 2;

这里我认为值得一提的是SORT BYORDER BY这两个子句以及它们不同的原因,

SELECT * FROM <table_name> SORT BY <column_name> DESC LIMIT 2

如果您使用 SORT BY 子句,它会按 reducer 对数据进行排序,这意味着如果您有多个 MapReduce 任务,它将生成部分排序的数据。另一方面,ORDER BY 子句将为最终的 Reduce 任务生成有序数据。想了解更多请参考this link.

SELECT * FROM <table_name> ORDER BY <column_name> DESC LIMIT 2

注意: 最后,即使接受的答案包含 SORT BY 子句,我更喜欢在一般用例中使用 ORDER BY 子句以避免任何数据丢失。