Hive的严格模式

Hive 提供了一个严格模式,可以防止用户执行那些可能意想不到的不好的影响的查询。
通过设置属性 hive.mapred.mode 值为默认是非严格模式 nonstrict 。开启严格模式需要
修改 hive.mapred.mode 值为 strict。

<property>
	<name>hive.mapred.mode</name>
	<value>strict</value>
</property>
开启严格模式可以禁止 3 种类型的查询
  1. 对于分区表,除非 where 语句中含有分区字段过滤条件来限制范围,否则不允许执行。
    换句话说,就是用户不允许扫描所有分区。进行这个限制的原因是,通常分区表都拥有
    非常大的数据集,而且数据增加迅速。没有进行分区限制的查询可能会消耗令人不可接
    受的巨大资源来处理这个表。
  2. 对于使用了 order by 语句的查询,要求必须使用 limit 语句。因为 order by 为了执行排
    序过程会将所有的结果数据分发到同一个 Reducer 中进行处理,强制要求用户增加这个
    LIMIT 语句可以防止 Reducer 额外执行很长一段时间。
  3. 限制笛卡尔积的查询。对关系型数据库非常了解的用户可能期望在执行 JOIN 查询的时
    候不使用 ON 语句而是使用 where 语句,这样关系数据库的执行优化器就可以高效地将
    WHERE 语句转化成那个 ON 语句。不幸的是,Hive 并不会执行这种优化,因此,如果
    表足够大,那么这个查询就会出现不可控的情况。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值