在Hive中实现限制查询

时间:2014-06-24 11:10:32

标签: hive hiveql

根据我的要求,我必须在配置单元中实现上限和下限。为此,我试图写这样的查询

SELECT * FROM `your_table` LIMIT 0, 5 
SELECT * FROM `your_table` LIMIT 5, 5 

但是hive仅支持1个限制,它不支持上限和下限。我尝试使用其他替代方法来实现这一点,使用RANK(),ROWNUM()但没有成功。

任何人都可以帮我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:0)

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

从GITHUB下载Facbook UDF https://github.com/brndnmtthws/facebook-hive-udfs

从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 ;

更多参考 https://issues.apache.org/jira/browse/HIVE-1545

How can I add row numbers for rows in PIG or HIVE?