Hive 在配置单元中实现限制查询

Hive 在配置单元中实现限制查询,hive,hiveql,Hive,Hiveql,根据我的要求,我必须在蜂巢中实现上限和下限。为此,我正在尝试编写类似这样的查询 SELECT * FROM `your_table` LIMIT 0, 5 SELECT * FROM `your_table` LIMIT 5, 5 但hive只支持1个限制,不支持上限和下限。我尝试了其他方法,通过使用RANK、ROWNUM来实现这一点,但没有成功 谁能帮我解决这个问题。提前感谢。您好,您可以使用Facebook的UDF和rownum功能 从GITHUB下载Facbook UDF 从UDF

根据我的要求,我必须在蜂巢中实现上限和下限。为此,我正在尝试编写类似这样的查询

SELECT * FROM `your_table` LIMIT 0, 5 
SELECT * FROM `your_table` LIMIT 5, 5 
但hive只支持1个限制,不支持上限和下限。我尝试了其他方法,通过使用RANK、ROWNUM来实现这一点,但没有成功


谁能帮我解决这个问题。提前感谢。

您好,您可以使用Facebook的UDF和rownum功能

从GITHUB下载Facbook UDF

从UDF项目中创建一个jar文件

您可以从配置单元控制台中的本地路径添加jar文件

ADD JAR s3n://obfuscated-path/assets/jars/facebook-udfs-1.0.jar;
CREATE TEMPORARY FUNCTION NumberRows AS 'com.facebook.hive.udf.UDFNumberRows';

SELECT 
  A.product_id, 
  A.category, 
  A.product_name, 
  A.brand, 
  A.rank_score,
  CAST(NumberRows(A.category) as FLOAT), 
FROM (
  SELECT 
    product_id, 
    category, 
    product_name, 
    brand,
    A.rank_score
  FROM
    source_table
  DISTRIBUTE BY 
    category 
  SORT BY
    category, rank_score desc
  ) A ;
更多参考资料


您可能必须使用rank方法来实现这一点。您能否在配置单元中提供更多关于数据结构和用例的详细信息?另外,您使用的hive版本是什么?