Hive基础知识(二一):优化篇-执行计划与Fetch抓取

Hive如何优化可以提高运行效率 Hive如何优化可以提高运行效率 一、Fetch抓取 Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SELECT * FROM employees;在这种情况下,Hive可以简单地读取employee对应的存储目录下的文件,然后输出查询结果到控制台。 在hive-default.xml.template文件中hive.fetch.task.convers... 阅读详情

1. 执行计划(Explain)

1)基本语法

EXPLAIN [EXTENDED | DEPENDENCY | AUTHORIZATION] query

2)案例实操

(1)查看下面这条语句的执行计划

没有生成 MR 任务的

hive (default)> explain select * from emp;
OK
Explain
STAGE DEPENDENCIES:
  Stage-0 is a root stage
​
STAGE PLANS:
  Stage: Stage-0
    Fetch Operator
      limit: -1
      Processor Tree:
        TableScan
          alias: emp
          Statistics: Num rows: 1 Data size: 6460 Basic stats: COMPLETE Column stats: NONE
          Select Operator
            expressions: empno (type: int), ename (type: string), job (type: string), mgr (type: int), hiredate (type: string), sal (type: double), comm (type: double), deptno (type: int)
            outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7
            Statistics: Num rows: 1 Data size: 6460 Basic stats: COMPLETE Column stats: NONE
            ListSink
​
Time taken: 14.564 seconds, Fetched: 17 row(s)

有生成 MR 任务的

hive (default)> explain select deptno, avg(sal) avg_sal from emp group by deptno;
OK
Explain
STAGE DEPENDENCIES:
  Stage-1 is a root stage
  Stage-0 depends on stages: Stage-1  #stage-1依赖于stage-0阶段
​
STAGE PLANS:
  Stage: Stage-1
    Map Reduce
      Map Operator Tree: #Map操作
          TableScan
            alias: emp #扫描的表
            Statistics: Num rows: 1 Data size: 6460 Basic stats: COMPLETE Column stats: NONE
            Select Operator #查询的操作
              expressions: sal (type: double), deptno (type: int)
              outputColumnNames: sal, deptno
              Statistics: Num rows: 1 Data size: 6460 Basic stats: COMPLETE Column stats: NONE
              Group By Operator  #读取的字段
                aggregations: sum(sal), count(sal)
                keys: deptno (type: int)
                mode: hash
                outputColumnNames: _col0, _col1, _col2
                Statistics: Num rows: 1 Data size: 6460 Basic stats: COMPLETE Column stats: NONE
                Reduce Output Operator
                  key expressions: _col0 (type: int)
                  sort order: +
                  Map-reduce partition columns: _col0 (type: int)
                  Statistics: Num rows: 1 Data size: 6460 Basic stats: COMPLETE Column stats: NONE
                  value expressions: _col1 (type: double), _col2 (type: bigint)
      Execution mode: vectorized
      Reduce Operator Tree: #reduce操作
        Group By Operator
          aggregations: sum(VALUE._col0), count(VALUE._col1)
          keys: KEY._col0 (type: int)
          mode: mergepartial
          outputColumnNames: _col0, _col1, _col2
          Statistics: Num rows: 1 Data size: 6460 Basic stats: COMPLETE Column stats: NONE
          Select Operator
            expressions: _col0 (type: int), (_col1 / _col2) (type: double)
            outputColumnNames: _col0, _col1
            Statistics: Num rows: 1 Data size: 6460 Basic stats: COMPLETE Column stats: NONE
            File Output Operator
              compressed: false
              Statistics: Num rows: 1 Data size: 6460 Basic stats: COMPLETE Column stats: NONE
              table:
                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
​
  Stage: Stage-0 #第二个阶段
    Fetch Operator
      limit: -1
      Processor Tree:
        ListSink
​
Time taken: 2.475 seconds, Fetched: 53 row(s)

(2)查看详细执行计划(多加一个extends)

hive (default)> explain extended select * from emp;
hive (default)> explain extended select deptno, avg(sal) avg_sal from emp group by deptno;

2. Fetch 抓取

Fetch 抓取是指,Hive 中对某些情况的查询可以不必使用 MapReduce 计算。例如:SELECT * FROM employees;在这种情况下,Hive 可以简单地读取 employee 对应的存储目录下的文件, 然后输出查询结果到控制台。

在 hive-default.xml.template 文件中 hive.fetch.task.conversion 默认是 more,老版本 hive 默认是 minimal,该属性修改为 more 以后,在全局查找、字段查找、limit 查找等都不走 mapreduce。

<property>
 <name>hive.fetch.task.conversion</name>
 <value>more</value>
 <description>
 Expects one of [none, minimal, more].Some select queries can be converted to single FETCH task minimizing 
latency. Currently the query should be single sourced not having any subquery and should not have any aggregations or distincts (which incurs RS), lateral views and joins. 0. none : disable hive.fetch.task.conversion 1. minimal : SELECT STAR, FILTER on partition columns, LIMIT only 2. more : SELECT, FILTER, LIMIT only (support TABLESAMPLE and 
virtual columns --虚拟字段)
 </description>
</property>

1)案例实操:

(1)把 hive.fetch.task.conversion 设置成 none,然后执行查询语句,都会执行 mapreduce 程序。

hive (default)> set hive.fetch.task.conversion=none;
hive (default)> select * from emp;
hive (default)> select ename from emp;
hive (default)> select ename from emp limit 3;

(2)把 hive.fetch.task.conversion 设置成 more,然后执行查询语句,如下查询方式都不 会执行 mapreduce 程序。

hive (default)> set hive.fetch.task.conversion=more; 
hive (default)> select * from emp; 
hive (default)> select ename from emp; 
hive (default)> select ename from emp limit 3;

【硬刚Hive】Hive高级(1):优化(1) 执行计划/ Fetch 抓取 /本地模式 欢迎关注博客主页:微信搜:import_bigdata,大数据领域硬核原创作者_王知无(import_bigdata)_优快云博客 欢迎点赞、收藏、留言 ,欢迎留言交流!本文由【王知无】原创,首发于 优快云博客!本文首发优快云论坛,未经过官方和本人允许,严禁转载! 本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的Hive部分补充。 1 执行计划(Explain) 1)基本语法 EXPLAIN [EXTENDED | DEPENDENCY | AUTHO. 阅读详情

相关推荐

182.Hive(四):企业级调优:执行计划,fetch抓取,本地模式,表的优化,案例实操

企业级调优:执行计划,fetch抓取,本地模式,表的优化,案例实操

鹏哥哥Aaa 642

hive--执行计划

来聊一聊执行计划,如果掌握了MapReduce,且开发者有一定的经验积累可以反推Compiler将SQL转换的MapReduce执行算法,并借助explain来比对你构思的执行计划和实际生成的执行计划是否存在差异,并思考差异的原因是啥,慢慢就能够对生成的算法以及算法执行路径图是否合理给出一个自己的评判,同时也能提升自己对SQL的掌控

qq_46893497的博客 3944

深入剖析 Hive Fetch 抓取机制:原理、优化与实践

Hive Fetch 机制通过直接访问存储层数据,为简单查询提供了高效解决方案。随着 Hive 向实时化演进,Fetch 与向量化执行、存储层优化的结合将成为重要发展方向。深入理解查询计划(使用EXPLAIN命令)定期分析慢查询日志结合tez引擎实现混合执行模式通过合理配置 Fetch 机制,可显著提升 Hive 查询性能,降低集群资源消耗,为大数据分析平台的高效运行提供有力支撑。

2401_83088008的博客 752

【大数据之Hive】二十七、HQL之Fetch抓取、本地模式、并行执行、严格模式

Fetch抓取是指Hive中对某些情况的查询可以不必使用MapReduce计算。例如:select * from emp;在这种情况下,Hive可以简单地读取emp对应的存储目录下的文件,然后输出查询结果到控制台。

阿宁的博客 760

【计算机视觉】基于复杂环境下的车牌识别

本文针对复杂环境下(光照变化、车牌变形、噪声干扰)的车牌识别问题,提出了一套完整的优化方案。通过四个核心环节进行改进:1)采用CLAHE、同态滤波等技术优化光照处理;2)使用边缘检测和透视变换应对车牌变形;3)结合中值滤波和暗通道去噪算法消除干扰;4)改进字符分割与识别方法。文章提供了详细的Python实现代码,展示了从预处理到字符识别的完整流程,并通过多策略融合显著提升了复杂场景下的识别准确率。实验结果表明,该方法能有效应对各类复杂环境挑战,为实际应用提供了可靠解决方案。

2401_84149564的博客 1625

配电网故障重构/孤岛划分/故障恢复

程序主要复现《基于GA_BFGS算法的配电网故障恢复性重构研究_郑海广》,采用matlab编程软件实现,依据网络结构和DG供电方式对配电网进行孤岛划分,将含有 DG 的配电网拓扑结构看成一个树,搭建成连通图模型,使得将孤岛的划分变成了求取最小生成树,以网损和开关开断次数作为目标,采用 IEEE33 节点配电网为算例,通过遗传算法寻优计算,从而得到最佳的重构方案。

zhangxd212489的博客 2500

Hive性能调优之Fetch抓取

Fetch抓取是指hive在某些情况的查询可以不必使用MapReduce计算,例如在执行一个简单的select * from XX 时,我们只需要简单的进行抓取对应目录下的数据即可。 在hive-default.xml.template中,hive.fetch.task.conversion默认是morn,老版本中默认是minimal。 该属性为morn时,在全局查找,字段查找,limit查找等都不走MapReduce。 <property> <name>hive.fetch

寒暄的博客 1511

告别双导航栏!微信小程序web-view嵌入H5的导航栏隐藏实战(附uniapp代码)

本文详细解析了微信小程序中web-view嵌入H5页面时出现的双导航栏问题,并提供了基于uniapp的完整解决方案。通过环境感知、动态适配和样式隔离等技术手段,实现导航栏的无缝整合,提升用户体验和屏幕空间利用率。文章包含实战代码示例和常见问题排查指南,帮助开发者快速解决这一常见痛点。

weixin_26945061的博客 343

Hive调优: Fetch抓取

Fetch抓取(Hive可以避免进行MapReduce) Hive中对某些情况的查询可以不必使用MapReduce计算。 例如:SELECT * FROM employees;在这种情况下,Hive可以简单地读取employee对应的存储目录下的文件,然后输出查询结果到控制台。 在hive-default.xml.template文件中hive.fetch.task.conversion默认是mo...

5775

直击痛点:VS2015离线安装报错“安装包丢失或损坏”的根源分析与精准修复

本文深入剖析了Visual Studio 2015离线安装时出现“安装包丢失或损坏”报错的根本原因,指出问题核心在于安装程序固化的临时路径查找逻辑。文章提供了一步到位的精准修复方案,通过将ISO镜像中的完整packages文件夹复制到安装程序指定的临时路径,即可无需联网、无需操作证书直接解决问题,并对比分析了其他常见方法的局限性。

weixin_27734811的博客 357

window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm)

文章目录一、卸载node二、安装nvm三、配置路径和下载源四、使用nvm安装node五、nvm常用命令六、卸载nvm七、遇到的问题 nvm 全名 node.js version management,顾名思义是一个nodejs的版本管理工具。通过它可以安装和切换不同版本的nodejs。 一、卸载node 如果你已经安装了node,那么你需要先卸载node,如果你没有安装那直接跳过这一步到下一步。 打开控制面板 -> 打开程序和功能 -> 右上角搜索输入node -> 右键卸载 为了确保彻底

HuangsTing的博客 41万+

Hive优化方法汇总

1、Fetch抓取 Fetch 抓取是指,Hive 中对某些情况的查询可以不必使用 MapReduce 计算。例如:SELECT * FROM employees;在这种情况下,Hive 可以简单地读取 employee 对应的存储目录下的文件,然后输出查询结果到控制台。 在 hive-default.xml.template 文件中 hive.fetch.task.conversion 默认是 more,老版本 hive 默认是 minimal,该属性修改为 more 以后,在全局查找、字段查找、limi

南洲.的博客 4854

热力学仿真软件:Fluent_(8).材料属性设置

在 Fluent 中,材料属性主要包括密度、比热容、导热系数、黏度等物理性质。这些属性在不同的仿真场景中有着不同的作用,例如在流体仿真中,密度和黏度是必不可少的;在传热仿真中,导热系数和比热容是主要考虑的因素。如果所需的材料不在材料库中,或者需要对现有材料进行修改,用户可以自定义材料属性。在主菜单中选择Materials。点击打开材料编辑器。在材料编辑器中,点击Create按钮,输入新的材料名称。选择材料类型(如FluidSolid等)。在属性栏中填写所需的材料属性。

kkchenjj的博客 1492

【Hive-调优】并行执行,严格模式,Fetch抓取,本地模式

文章目录并行执行严格模式执行计划(Explain) 并行执行 Hive会将一个查询转化成一个或者多个阶段。 这样的阶段可以是MapReduce阶段、抽样阶段、合并阶段、limit阶段。或者Hive执行过程中可能需要的其他阶段。 默认情况下,Hive一次只会执行一个阶段。不过,某个特定的job可能包含众多的阶段,而这些阶段可能并非完全互相依赖的,也就是说有些阶段是可以并行执行的,这样可能使得整个job的执行时间缩短。 通过设置参数hive.exec.parallel值为true,就可以开启并发执行。 不过,在

一个写湿的程序猿 1876

PCL 改进快速欧式聚类【2025最新版】

在FEC: Fast Euclidean Clustering for Point Cloud Segmentation一文的基础上对算法进行改进。博客长期更新,本文最近更新时间为:2025年9月16日。

点云侠的博客 2569

【异常】 OpenClaw 超长入参报错排查与解决方案 [错误]: 400 <400> InternalError.Algo.InvalidParameter: Range of input leng

摘要: OpenClaw服务调用出现400 InvalidParameter报错,核心原因为输入内容长度超出1-129024字符限制。解决方案包括:1)紧急精简冗余入参;2)标准分块处理长文本;3)客户端增加预校验模块;4)长期可申请调整服务规格。该错误属于客户端参数校验异常,通过合理控制输入长度或分批次处理即可解决,重点需保证语义完整性。建议优先采用自动化预校验机制,从源头预防问题发生。(149字)

奶爸的编程之路,也就一周冷个三天 1986

Hive快速入门系列(14) | Hive性能调优 [一]Fetch抓取与本地模式

  此次博主为大家带来的是Hive性能调优中的Fetch抓取与本地模式。 目录一. Fetch抓取二. 本地模式 一. Fetch抓取   我们在刚开始学习hive的时候,都知道hive可以降低程序员的学习成本和开发成本,具体表现就在于可以将SQL语句转换成MapReduce程序运行。   Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算\color{#FF000...

不温卜火 7766

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Hive调优策略——Fetch抓取 & 表的各种优化策略(mapjoin原理)

总结一下工作中常用的hive调优策略 目录 1. Fetch抓取 2. 小表Join大表(mapjoin的原理) 3. 大表Join大表 (0)前提:配置历史服务器 (1)空key过滤 (2)空key转换(将空值key转换为其他随机数,避免数据倾斜) 4. Group By发生数据倾斜 5. Count(distinct key)对key去重后求总行数 6. 行列过滤(分区过滤...

攻城狮Kevin 2530

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

什么是Hive HQL之Fetch抓取

HiveQL是Hive特有的查询语言,语法与SQL相似,旨在使用户能够以较低的门槛进行大数据查询。HiveQL允许用户在Hive中执行多种类型的查询,包括数据定义语言(DDL)、数据操作语言(DML)以及数据控制语言(DCL)。用户可以通过HiveQL创建表、插入数据、查询数据、更新数据等。在数据查询中,用户通常希望获取特定数量的记录以进行分析或展示,此时,FETCH关键字就显得尤为重要。在Hive HQL中,FETCH。

My_wife_QBL的博客 1315

101-115-hive-优化执行计划表优化

hive-101-115

qq_37171694的博客 573

Hive优化(21种方案)

1、Fetch抓取   Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SELECT * FROM employees;在这种情况下,Hive可以简单地读取employee对应的存储目录下的文件,然后输出查询结果到控制台。   在hive-default.xml.template文件中hive.fetch.task.conversion默认是more,老版本...

小道的博客 6072

hive3之执行计划(Explain)、Fetch 抓取、本地模式、表的优化、Group By、笛卡尔积、行列过滤

hive3之执行计划(Explain)、Fetch 抓取、本地模式、表的优化、Group By、笛卡尔积、行列过滤

花&败 516

12、Hive优化

Hive 优化 Fetch抓取 Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SELECT * FROM employees;在这种情况下,Hive可以简单地读取employee对应的存储目录下的文件,然后输出查询结果到控制台。在hive-default.xml.template文件中hive.fetch.task.conversion默认是more,该属...

resilienter的博客 2189

Hive性能调优之Fetch抓取(1)

        我们在刚开始学习hive的时候,都知道hive可以降低程序员的学习成本和开发成本,具体表现就在于可以将SQL语句转换成MapReduce程序运行。         但是Hive中对某些情况的查询可以不必使用MapReduc...

大数据梦想家 7453

HIVE 优化完整

Fetch 抓取是指,Hive 中对某些情况的查询可以不必使用 MapReduce 计算。例如:SELECT * FROM emp;在这种情况下,Hive 可以简单地读取 emp 对应的存储目录下的文件,然后输出查询结果到控制台。在文件中默认是more,老版本hive默认是minimal,该属性修改为more以后,在全局查找、字段查找、limit查找等都不走 mapreduce。</</</</案例实操:把设置成none,然后执行查询语句,都会执行 mapreduce 程序。把。

sheep55的博客 976

Hive调优1 Fetch抓取

Hive调优1 Fetch抓取 更多整理都在我的github上:Auraros欢迎大家。 Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算. 在刚开始学习hive的时候,都知道hive可以降低程序员的学习成本和开发成本,一般的SQL语句转换成MapReduce程序运行。 那么问题来了:什么样的程序才不用进行MR计算呢? 首先是针对简单查询的,比如单纯的select 当数据量很少的时候 出现数据倾斜的时候 数据量特别大的时候 针对简单查询的解决 但是Hive中对某些情况

Auraros的博客 322
上一篇: Hive基础知识(二十):Hive 文件存储形式与文件压缩对比
下一篇: Hive基础知识(二二):优化篇-Hadoop数据底座下的优化
依晴无旧
博客等级 码龄7年 1683粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值