【问题标题】:HIVE: enforce where clause in the queryHIVE:在查询中强制执行 where 子句
【发布时间】:2017-03-16 22:04:27
【问题描述】:

我们有一个按日期分区的 HIVE 表,我们希望最终用户始终在查询中使用 where 子句,如果他们不使用它,它应该抛出异常。

HIVE 中是否有任何设置可以强制执行?

【问题讨论】:

  • 您正在寻找的确切限制是什么?显然where 1=1 不会做这项工作
  • @DuduMarkovitz 我们有分区列“dt”,所以我们希望每个查询都应该包含这个日期列。示例:dt="2017-01-01" 或 dt >= "2017-01-01 AND dt

标签: hive hiveql


【解决方案1】:

1

hive.metastore.limit.partition.request

  • 默认值:-1
  • 添加于:Hive 2.2.0 与 HIVE-13884

这限制了可以从 Metastore 为给定表请求的分区数。 如果查询尝试获取每个表的分区数超过配置的限制,则不会执行查询。 “-1”值表示无限制。 此参数优先于 hive.limit.query.max.table.partition(已弃用)。

https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-hive.metastore.limit.partition.request

2

让您的用户通过视图访问数据,例如-

create view mytable_last_year
as
select  *
from    mytable
where   dt >= add_months(current_date,-12)
;

【讨论】:

  • 谢谢,表级别有什么设置吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
相关资源
最近更新 更多