Hive 严格模式设置

Hive 在早期使用参数 hive.mapred.mode 来决定是否执行严格模式, 其值为 strict 或者 nostrict. 当其值为 strict 时,执行严格模式,如从分区表查询时,过滤条件必须有分区字段。

在 Hive 3.1.3 中,因为 hive.mapred.mode 比较粗暴,为了能更好的在不同地方是否严格模式,在不同的地方用各自的参数。

为了使用不同的参数,hive.mapred.mode 已经被废弃,不能设置,如果设置了,则以 hive.mapred.mode 值为准,新的参数不生效。

新的参数值为 boolean 型, 值可以为 true 和 false。

严格模式的参数如下:

1. hive.strict.checks.orderby.no.limit

是否禁止 order by 后没有 limit 的操作。

注意:当前检查不考虑数据量,仅从 query 的语法上检查。

示例:

hive.strict.checks.orderby.no.limittrue 时,以下查询不能执行。

sql 复制代码
select c1, c2 from t order by c1;

必须有 limit 部分,如以下 query 可以执行。

sql 复制代码
select c1, c2 from t order by c1 limit 100;

2. hive.strict.checks.no.partition.filter

是否禁止查询分区表没有分区字段的过滤操作。

注意:当前检查不考虑数据量,仅从 query 的语法上检查。

如表 t 有分区字段 pc1, pc2。

hive.strict.checks.no.partition.filter=true 时,以下查询不能执行。

sql 复制代码
select c1, sum(c2) 
from t 
where c3 > 100 
group by c1 ;

必须加上至少一个分区字段, 如以下 query 可以执行。

sql 复制代码
select c1, sum(c2) 
from t 
where c3 > 100 
    and pt1='aaa' 
group by c1 ;

3. hive.strict.checks.type.safety

执行严格的类型检查,当开启时,禁止以下操作:

bigint 和 string 类型的比较。

bigint 和 double 类型的比较。

开启时,执行以下 Query 会报错。

sql 复制代码
create table t1(c_bigint bigint, c_string string, c_double double);

开启时,执行以下查询会有警告WARNING: Comparing a bigint and a double may result in a loss of precision.

sql 复制代码
select * from t1 where c_bigint > c_double;

4. hive.strict.checks.cartesian.product

开启时,禁止迪卡尔积关联。

sql 复制代码
select * from t1 join t2;

需要加上关联条件,可以用 on 或者 where 部分都可以。

如以下 Query 都可以

sql 复制代码
select * from t1 join t2 
on t1.c1=t2.c1;

select * from t1 join t2 
where t1.c1=t2.c1;

5. hive.strict.checks.bucketing

开启时,禁用对 bucketing 表执行 load into 操作。

相关推荐
hzp6666 小时前
spark动态分区参数spark.sql.sources.partitionOverwriteMode
大数据·hive·分布式·spark·etl·partitionover
那我掉的头发算什么7 小时前
【数据库】navicat的下载以及数据库约束
android·数据库·数据仓库·sql·mysql·数据库开发·数据库架构
yumgpkpm9 小时前
CMP(类ClouderaCDP7.3(404次编译) )完全支持华为鲲鹏Aarch64(ARM),粉丝数超过200就开源下载
hive·hadoop·redis·mongodb·elasticsearch·hbase·big data
励志成为糕手1 天前
Hive数据仓库:架构原理与实践指南
大数据·数据仓库·hive·1024程序员节·hql
B站_计算机毕业设计之家1 天前
Spark微博舆情分析系统 情感分析 爬虫 Hadoop和Hive 贴吧数据 双平台 讲解视频 大数据 Hadoop ✅
大数据·hadoop·爬虫·python·数据分析·1024程序员节·舆情分析
大叔_爱编程2 天前
基于随机森林算法的Boss直聘数据分析及可视化-hadoop+django+spider
hadoop·django·1024程序员节·spider·随机森林算法·boss直聘
毕设源码-赖学姐2 天前
【开题答辩全过程】以基于Hadoop的电商数据分析系统为例,包含答辩的问题和答案
大数据·hadoop·分布式·1024程序员节
半梦半醒*2 天前
ELK1——elasticsearch
linux·运维·数据仓库·elasticsearch·centos
阿什么名字不会重复呢2 天前
Hadoop报错 Couldn‘t find datanode to read file from. Forbidden
大数据·hadoop·分布式
通往曙光的路上3 天前
day17_cookie_webstorage
数据仓库·hive·hadoop