在蜂巢实施限制查询(Implementing Limit query in Hive)

2019-10-20 07:59发布

对于我的要求,我必须实现蜂巢上限和下限。 对于我想写查询是这样的

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

但是蜂房仅支持1的限制,它不支持上限和下限。 我与其他替代品尝试用RANK(),ROWNUM(),但没有成功实现这一目标。

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

Answer 1:

嗨,你可以使用Facebook UDF和ROWNUM功能

下载Facbook UDF的从GitHub 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

如何添加行号在猪或HIVE行?



文章来源: Implementing Limit query in Hive
标签: hive hiveql