Hive有一个严格模式,在严格模式下会对可能产生较大查询结果的语句做限制,禁止其提交执行。

一、切换严格模式

查看当前的模式:

hive> set hive.mapred.mode;
hive.mapred.mode is undefined

未定义即为false,即no-strict模式。

开启严格模式:

set hive.mapred.mode=strict; 

关闭严格模式:

set hive.mapred.mode=undefined;

二、严格模式严格在哪里

1. 对分区表的查询必须使用到分区相关的字段

分区表的数据量通常都比较大,对分区表的查询必须使用到分区相关的字段,不允许扫描所有分区,想想也是如果扫描所有分区的话那么对表进行分区还有什么意义呢。

当然某些特殊情况可能还是需要扫描所有分区,这个时候就需要记得确保严格模式被关闭。

2. order by必须带limit

因为要保证全局有序需要将所有的数据拉到一个Reducer上,当数据集比较大时速度会很慢。个人猜测可能是设置了limit N之后就会有一个很简单的优化算法:每个Reducer排序取N然后再合并排序取N即可,可大大减少数据传输量。

3. 禁止笛卡尔积查询(join必须有on连接条件)

hive不会对where中的连接条件优化为on,所以join必须带有on连接条件,不允许两个表直接相乘。

.

转载于:https://www.cnblogs.com/cc11001100/p/9434120.html

Hive笔记之严格模式(strict mode)相关推荐

  1. hive入门之安装模式

    Hive的安装模式 这个网址能找到apache所有产品的安装包: archive.apache.org/dist/ 嵌入模式 元数据信息被存储在HIVE自带的Derby数据库中 -只允许创建一个连接 ...

  2. hive 笔记(有点乱,凑合看)

    hive 笔记(有点乱,凑合看) set hive.map.aggr=true; set hive.groupby.skewindata=true; set hive.merg.mapfiles=tr ...

  3. Android初级开发笔记-- activity启动模式的学习(1)

    第一次学习Android中一个很重要的概念,启动模式.文章记录的也只是一些入门知识,随着学习的深入还会有activity启动模式的学习(2)和(3). 下面分三个小点说一下对启动模式的理解区别以及如何 ...

  4. 设计模式学习笔记——解释器(Interpreter)模式

    设计模式学习笔记--解释器(Interpreter)模式 @(设计模式)[设计模式, 解释器模式, Interpreter] 设计模式学习笔记解释器Interpreter模式 基本介绍 解释器案例 类 ...

  5. 设计模式学习笔记——命令(Command)模式

    设计模式学习笔记--命令(Command)模式 @(设计模式)[设计模式, 命令模式, command] 设计模式学习笔记命令Command模式 基本介绍 命令案例 类图 实现代码 Command接口 ...

  6. 设计模式学习笔记——代理(Proxy)模式

    设计模式学习笔记--代理(Proxy)模式 @(设计模式)[设计模式, 代理模式, proxy] 设计模式学习笔记代理Proxy模式 基本介绍 代理案例 类图 实现代码 Printable接口 Pri ...

  7. 设计模式学习笔记——状态(State)模式框架

    设计模式学习笔记--状态(State)模式框架 @(设计模式)[设计模式, 状态模式, State] 设计模式学习笔记状态State模式框架 基本介绍 状态案例 类图 实现代码 State接口 Day ...

  8. 设计模式学习笔记——备忘录(Memento)模式

    设计模式学习笔记--备忘录(Memento)模式 @(设计模式)[设计模式, 备忘录模式, memento] 设计模式学习笔记备忘录Memento模式 基本介绍 备忘录案例 类图 实现代码 Memen ...

  9. 设计模式学习笔记——观察者(Observer)模式

    设计模式学习笔记--观察者(Observer)模式 @(设计模式)[设计模式, 观察者模式, Observer] 设计模式学习笔记观察者Observer模式 基本介绍 观察者案例 类图 实现代码 Ob ...

最新文章

  1. java如何调用thrift_java – 我想在一个传输上使用多个服务(Thrift)
  2. Linux下使用Speedtest测试网速教程
  3. 在 SQLite3 中使用回调函数
  4. mysql全拼_Mysql中取得汉字的全拼、拼音首字母
  5. c++new时赋初值_C++ Lesson 7:new,delete amp; 类的重用
  6. python画条形图-python使用Matplotlib画条形图
  7. 再论使用Oracle Instant Client连接Oracle
  8. Oauth2.0如何理解?
  9. 计算机ping使用的端口,ping 端口:Ping端口命令的使用方法介绍
  10. ModuleNotFoundError: No module named ‘views‘
  11. Mac ssh: connect to host XXX.XXX.XXX.XXX port XX: Operation timed out的问题解决
  12. kail 安装小企鹅输入法
  13. Jacobi(雅可比)迭代原理与matlab代码
  14. struts1 使用poi组件 读取excel文件,创建excel ,输出excel文件
  15. 小程序接入h5页面_h5页面和小程序交互
  16. 嵌入式工程师的经典面试题目及答案
  17. C++ 之重定义问题
  18. 织梦DedeCms 5.7如何更换FCK编辑器
  19. 一个ZFS开发者眼中的苹果最新文件存储系统APFS
  20. STM32CubeMX提示ST

热门文章

  1. REVERSE-PRACTICE-BUUCTF-6
  2. 【windows环境——VSCode安装教程】
  3. 【POJ - 3272】Cow Traffic(dp,建反向图,DAG拓扑图)
  4. 【CodeForces - 202A】LLPS (思维,字符串)
  5. 【HDU - 3499】 Flight (单源最短路+优惠问题)
  6. Apollo进阶课程㊴丨Apollo安装过程概述
  7. c语言蓝牙接收6,终于搞定了通过两路蓝牙接收数据
  8. phoenix hbase java_java jdbc访问hbase phoenix
  9. 学习笔记14-C语言-小项目-通讯录
  10. leetcode21 合并两个链表