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 BY
和ORDER 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
子句以避免任何数据丢失。
我正在尝试根据 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 BY
和ORDER 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
子句以避免任何数据丢失。