如何在Hive的SHOW PARTITIONS子句上使用过滤条件?

时间:2019-06-17 05:48:06

标签: hadoop hive

我有按日期,app_name,src(3个分区)划分的配置单元表

我想以多种方式触发显示分区命令

// works
show partitions mydb.tab_dt partition(date='2017-05-01');

// works
show partitions mydb.tab_dt partition(date='2017-05-01'/app_name='app_io'/src='mobile');

当我需要在partition子句中进行一些过滤时,我无法使其工作。下面是我正在尝试的一些示例。

// doesn't work
show partitions mydb.tab_dt partition(date>='2017-05-01');

// doesn't work
show partitions mydb.tab_dt partition(date='2017-05-01'/app_name like '%app%');

// doesn't work
show partitions mydb.tab_dt partition(app_name like '%app%'/src='mobile');

我希望我已经阐明了我的问题。

2 个答案:

答案 0 :(得分:1)

目前看来这是不可能的,但是will be after Hive 4.0.0.

文档here中介绍了当前的可能性。

但是,我最终要做的是使用 hive -e 运行SHOW PARTITIONS,然后使用grep过滤结果。

答案 1 :(得分:0)

要查找特定分区,您可以使用 hive shell 获取分区,然后使用 grep 提取特定分区。这对我来说效果很好。

 hive -e 'show partitions db.tablename;' | grep 202101*

 hive -e 'show partitions db.tablename partition (type='abc');' | grep 202101*