如何优化Hive查询?看这篇

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

Hive查询过程

根据上图,查询组件主要包括:

UI(user interface)

        –用户提交查询或者其他操作,现在标准UI有CLI(command line interface),Thrift Serve,Hive web interface(HWI)。

Driver(驱动)

         –负责接收查询及其他操作,Driver 实现了会话句柄的概念,并提供在基于JDBC / ODBC的execute和fetch API

Compiler(编译器)

         – 解析查询的sql,对不同的块和不同的查询表达式进行语义分析,借助metastore中的表和分区的元数据定义生成执行计划。

Metastore

        –存储所有表及分区的结构信息,包含列名,列的数据类型,读取和写入的序列化器和反序列化器以及相关的HDFS文件存储目录

Execution Engine(执行引擎)

         –执行compiler所产生的执行计划。该执行计划是一个阶段的DAG,执行引擎关联执行计划中不同阶段的之间依赖,并负责在不同的系统组件中执行不同的阶段。

查询流程

(1)Step 1:UI(user interface)调用的Driver的execute接口

(2)Step 2:Driver为查询创建会话句柄,并将查询发送给compiler以生成执行计划,

(3)Step 3 and 4:compiler从metastore获取相关的元数据定义

(4)Step 5:元数据用于对查询树中的表达式进行类型检查,以及基于查询谓词调整分区,生成计划

(5)Step 6, 6.1, 6.2 and 6.3:由compiler生成的执行计划是阶段的DAG,每个阶段都会涉及到Map/Reduce job,元数据的操作或者HDFS文件的操作。在Map/Reduce阶段,执行计划包含Map 操作树(操作树在Mappers上执行)和reduce操作树(Reduce 操作树在 Reducers上执行),Execution Engine 将各个阶段提交个适当的组件执行。

<
ARM Cortex-M系列授权解析:从研发到量产的免费与付费之路 本文深入解析了ARM Cortex-M系列内核从研发到量产过程中的授权模式。研发阶段可利用ARM DesignStart等免费资源进行原型验证,但产品商业化量产则需支付授权费与版税。文章对比了采购商用MCU与自研芯片的成本差异,并探讨了RISC-V作为免费替代方案在IoT领域的应用前景与挑战,为开发者提供了清晰的选型指南。 阅读详情

相关推荐

Hive学习之连接查询

Hive支持连接查询,但有一些条件必须遵守,比如只支持相等查询,其它查询如不等式查询则不支持,还支持外连接,左半连接查询。另外Hive支持多于两个表以上的连接查询。下面为Hive连接查询的语法:

skyWalker_ONLY 8789

Hive面试,如何优化查询效率!

公众号后台回复“图书“,了解更多号主新书内容作者:数据社来源:数据社1,开启FetchTask 一个简单的查询语句,是指一个没有函数、排序等功能的语句,当开启一个Fetch Task...

数据森麟 410

筑牢上线前安全防线:安全运维服务中的检测实践与深化

在日益严峻的网络安全形势下,将漏洞扫描、渗透测试和基线核查有机结合的上线前安全检测,是保障信息系统安全、稳定、合规上线的基石。通过专业、严谨、协作的检测实践,乙方安全团队能够有效协助甲方在系统生命周期的起点就构筑起坚固的安全防线,为业务的顺利开展和用户的信任保驾护航,真正实现“安全赋能业务”的价值。这道“守门人”的职责,是数字时代企业稳健前行的不可或缺的保障。专业的安全服务提供商(乙方)需要与甲方(系统所有者/运营方)建立紧密、透明、协作的伙伴关系,实现风险的闭环管理,甚至推动甲方安全能力的长期提升。

huluang的专栏 160

HiveHive常见问题排查技巧

一、作业慢或者有问题,先看Yarn链接 1.作业Pending问题查看 通常是资源问题 ACCEPTED: waiting for AM container to be allocated 表示AM的资源都没有分配 Pending很多,Running很少 队列资源用满情况分类 队列满了,不一定是vcore满,可能是内存满了,使用不合理都是先把内存用满了 解决办法: 1.杀作业,停止不重要作业,保障优先级 2.加队列资源 队列满的情况,有时候是因为用户内存设置太大,建议业务砍内存 Config

可乐 2700

Hive性能优化

架构层面优化: l  分表 l  合理利用中间结果集,避免查过就丢的资源浪费,减低Hadoop的IO负载 l  常用复杂或低效函数尽量不用或拆分成其他实现方式,如count(distinct) l  合理设计表分区,静态分区和动态分区 l  优化时一定要把握整体,单个作业最优不如整个作业最优。 l  文件存储格式和压缩方式 l  Hadoop本身的优化 l  有些逻辑,使用系统函数

DataFlow范式 6030

hive优化总结

1.我们知道大数据场景下不害怕数据量大,害怕的是数据倾斜,怎样避免数据倾斜,找到可能产生数据倾斜的函数尤为关键,数据量较大的情况下,慎用count(distinct),count(distinct)容易产生倾斜问题。 2.设置合理的map reduce 的task数量 map阶段优化 mapred.min.split.size: 指的是数据的最小分割单元大小;min的默认值是1B mapred.m...

xuxu96 4762

Hive 调优相关总结(持续更新)

1)fetch抓取: Hql中的某些查询可以不使用MR计算,例如select * from table;这种情况下Hive可以简单读取table对应的存储目录下的文件 具体的操作方式:在hive/conf/hive-default.xml文件中,修改hive.fetch.task.conversion(minimal和more)为more,这样全局查找,字段查找,filter查找,limit查找等都不走MR,直接Fetch 相关:hive.fetch.task.conversion 之 minimal

weixin_41346635的博客 254

Hive基础实战

文章目录1.数据库查看2.表定义操作2.1表属性查看2.2表定义create2.3表插入insert2.3表查询 select3.关键字3.1 limit3.2 with4.函数使用5.性能优化5.1 表关联5.2 查询优化 1.数据库查看 查看数据库 show databases; 切换数据库 use databases_name; 查看当前数据库 select current_dat...

bingchenwurao的博客 321

hive遗留问题

hive和mysql有什么不同 1.不支持下列from a,b where用法 SQL中对两表内联可以写成:select * from dual a,dual b where a.key = b.key; Hive中应为:select * from dual a join dual b on a.key = b.key 2.不能智能识别concat(‘;’,key),只会将‘;’当做SQL结...

kylin_learn的博客 609

【软件工程实践】Hive研究-Blog7

【软件工程实践】Hive研究-Blog7 2021SC@SDUSC 研究内容介绍 本人负责的是负责的是将查询块QB转换成逻辑查询计划(OP Tree) 如下的代码出自apaceh-hive-3.1.2-src/ql/src/java/org/apache/hadoop/hive/ql/plan中,也就是我的分析目标代码。本周的研究计划是继续解析PlanMapper.java文件源码。由于在Blog6中已经完成了对内部类CompositeMap的全部解析,因此在本次Blog中我们就完成对PlanMapper.

qq_45935878的博客 1495

hive】记录一下工作中用到的hive命令

前置命令 初始化元数据信息 schematool -dbType mysql -initSchema 启动hivehivesever2 nohup hive --service metastore 1>/mnt/metastore.log 2>&1 & nohup hive --service hiveserver2 1>/mnt/hiveserver2.log 2>&1 & 一、连接hive beeline连接没有权限的hive

Mrerlou的博客 841

hive操作

CREATE TEMPORARY 临时表 查询表结构 show table extended like ‘pdw_j03_ld_pkg_dim_columnset’ 1.hive模糊搜索表 show tables like ‘name’; 2.查看表结构信息 desc table_name; desc table_name; 3.查看分区信息 show partitions pdw_j03_ld_pkg_a062; 4.根据分区查询数据 select table_coulm from table_name

anqi3776的博客 408

hive 性能优化案例收集

1.2.

张伟的专栏 346

如何进行hive查询优化

hive查询优化的主要目的是提升效率,下面总结了查询中经常使用的优化点: 1.少用count(distinct ) 建议用group by 代替 distinct 。原因为count(distinct)逻辑只会有一个reducer来处理,即使设定了reduce task个数,set mapred.reduce.tasks=100也一样,所以很容易导致数据倾斜。坊间传闻,在面对大数据量时很多大厂都“明令禁止使用distinct”。 如sql语句:select count(distinct uid)...

java_atguigu的博客 3849

Hive性能调校

---提高Hive总体性能的若干技巧     刘宗全 2012-12-20 本报告主要就如何提高Hive执行的总体性能进行了调研,下面以分条的形式列举出来。 1.      设置hive.map.aggr=true,提高HiveQL聚合的执行性能。 这个设置可以将顶层的聚合操作放在Map阶段执行,从而减轻清洗阶段数据传输和Reduce阶段的执行时间,提升总体性能。 缺点:该设置会消耗更多的

1406

Hive调优学习笔记4

大数据学习之路,不定时修改和增加内容,欢迎指正 第5章 Hive Job优化 5.1 Hive Map优化 5.1.1 复杂文件增加Map数 当input的文件都很大,任务逻辑复杂,map执行非常慢的时候,可以考虑增加Map数,来使得每个map处理的数据量减少,从而提高任务的执行效率。 增加map的方法为:根据computeSlite(Math.max(minSize,Math.min(maxSize,blocksize)))=blocksize=128M公式,调整maxSize最大值,让maxSize最大

qq_48077612的博客 453

Hive优化(21种方案)

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

小道的博客 6044

Error while processing statement: FAILED: Execution Error, return code 3 from org.apache.

hive on spark引擎中 执行带有集合的sql时出现此报错[42000][3] Error while processing statement: FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Spark job failed during runtime. Please check stacktrace for the root cause. 解决方法一:切换

asd623444055的博客 6748

Hive使用简单总结

一.Hive介绍 1.1.Hive概述 Hive是基于Hadoop的一个数据仓库工具。可以将结构化的数据文件映射为一张表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 Hive是建立在 Hadoop 上的数据仓库基础构架。它...

Lonelybrbara的博客 723

join和子查询效率_如何进行hive查询优化

hive查询优化的主要目的是提升效率。用过hive的朋友,我想或多或少都有类似的经历:一天下来,没跑几次hive,就到下班时间了。下面总结了查询中经常使用的优化点:1. 少用count(distinct ) 建议用group by 代替 distinct 。原因为count(distinct)逻辑只会有一个reducer来处理,即使设定了reduce task个数,set mapred...

weixin_39866974的博客 1739

OptiX OSN 1800 V V100R005C00 产品概述.pdf

OptiX OSN 1800 V V100R005C00 产品概述.pdf

上一篇: 解决小文件问题
下一篇: redies数据类型及应用场景
徐凤年不是真无敌
博客等级 码龄5年 27粉丝 · 55原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值