郑州便宜网站建设公司,wordpress版本替换,wordpress新版无法保存,免费短网址生成我们在写Hive SQL的时候#xff0c;难免会在运行的时候有报错#xff0c;所以知道Hive SQL的执行计划具体是什么#xff0c;然后假如在之后的运行过程中有报错#xff0c;可以根据执行计划定位问题#xff0c;调试自己的SQL开发脚本。
一、含义
Hive SQL的执行计划描述S…我们在写Hive SQL的时候难免会在运行的时候有报错所以知道Hive SQL的执行计划具体是什么然后假如在之后的运行过程中有报错可以根据执行计划定位问题调试自己的SQL开发脚本。
一、含义
Hive SQL的执行计划描述SQL实际执行的整体轮廓通过执行计划能了解SQL程序在转换成相应计算引擎的执行逻辑掌握了执行逻辑也就能更好地把握程序出现的瓶颈点从而能够实现更有针对性的优化。此外还能帮助开发者识别看似等价的SQL其实是不等价的看似不等价的SQL其实是等价的SQL。可以说执行计划是打开SQL优化大门的一把钥匙。
二、关键字
explain三、查看SQL的执行计划
Hive提供的执行计划目前可以查看的信息有以下几种 explain查看执行计划的基本信息 explain dependencydependency在explain语句中使用会产生有关计划中输入的额外信息。它显示了输入的各种属性 explain authorization查看SQL操作相关权限的信息 explain vectorization查看SQL的向量化描述信息显示为什么未对Map和Reduce进行矢量化。从 Hive 2.3.0 开始支持 explain analyze用实际的行数注释计划。从 Hive 2.2.0 开始支持 explain cbo输出由Calcite优化器生成的计划。CBO 从 Hive 4.0.0 版本开始支持 explain locks这对于了解系统将获得哪些锁以运行指定的查询很有用。LOCKS 从 Hive 3.2.0 开始支持 explain ast输出查询的抽象语法树。AST 在 Hive 2.1.0 版本删除了存在bug转储AST可能会导致OOM错误将在4.0.0版本修复 explain extended加上 extended 可以输出有关计划的额外信息。这通常是物理信息例如文件名这些额外信息对我们用处不大
四、explain的使用方法
1语法格式
explain query; //query为需要查看执行计划的查询语句2执行计划结果示例
STAGE DEPENDENCIES: // 各个stage之间的依赖性Stage-1 is a root stageStage-0 depends on stages: Stage-1STAGE PLANS: // 各个stage的执行计划Stage: Stage-1Map ReduceMap Operator Tree:TableScanalias: test1Statistics: Num rows: 6 Data size: 75 Basic stats: COMPLETE Column stats: NONESelect Operatorexpressions: id (type: int)outputColumnNames: idStatistics: Num rows: 6 Data size: 75 Basic stats: COMPLETE Column stats: NONEGroup By Operatoraggregations: sum(id)mode: hashoutputColumnNames: _col0Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONEReduce Output Operatorsort order:Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONEvalue expressions: _col0 (type: bigint)Reduce Operator Tree:Group By Operatoraggregations: sum(VALUE._col0)mode: mergepartialoutputColumnNames: _col0Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONEFile Output Operatorcompressed: falseStatistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONEtable:input format: org.apache.hadoop.mapred.SequenceFileInputFormatoutput format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormatserde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDeStage: Stage-0Fetch Operatorlimit: -1Processor Tree:ListSink3执行计划结果释义
第一部分 stage dependencies 包含两个 stageStage-1 是根stage说明这是开始的stageStage-0 依赖 Stage-1Stage-1执行完成后执行Stage-0。第二部分 stage plan里面有一个 Map Reduce一个MR的执行计划分为两个部分
1.Map Operator TreeMAP端的执行计划树
2.Reduce Operator TreeReduce端的执行计划树这两个执行计划树里面包含这条sql语句的 operator
TableScan表扫描操作map端第一个操作肯定是加载表所以就是表扫描操作常见的属性
alias表名称
Statistics表统计信息包含表中数据条数数据大小等
Select Operator选取操作常见的属性
expressions需要的字段名称及字段类型
outputColumnNames输出的列名称
Statistics表统计信息包含表中数据条数数据大小等
Group By Operator分组聚合操作常见的属性
aggregations显示聚合函数信息
mode聚合模式值有 hash随机聚合就是hash partitionpartial局部聚合final最终聚合
keys分组的字段如果没有分组则没有此字段
outputColumnNames聚合之后输出列名
Statistics表统计信息包含分组聚合之后的数据条数数据大小等
Reduce Output Operator输出到reduce操作常见属性
sort order值为空 不排序值为 正序排序值为 - 倒序排序值为 - 排序的列为两列第一列为正序第二列为倒序
Filter Operator过滤操作常见的属性
predicate过滤条件如sql语句中的where id1则此处显示(id 1)
Map Join Operatorjoin 操作常见的属性
condition mapjoin方式 如Inner Join 0 to 1 Left Outer Join0 to 2
keys: join 的条件字段
outputColumnNamesjoin 完成之后输出的字段
Statisticsjoin 完成之后生成的数据条数大小等
File Output Operator文件输出操作常见的属性
compressed是否压缩
table表的信息包含输入输出文件格式化方式序列化方式等
Fetch Operator 客户端获取数据操作常见的属性
limit值为 -1 表示不限制条数其他值为限制的条数4、explain 的使用场景
1查询join 语句是否会过滤 null 的值 2查询group by 分组语句是否会进行排序 3哪条sql执行效率高 explain 还有很多其他的用途如查看stage的依赖情况、排查数据倾斜、hive 调优等。
五、explain dependency的用法
1语法
explain dependency query; // query为需要查看执行计划的SQL语句2含义 explain dependency用于描述一段SQL需要的数据来源输出是一个json格式的数据里面包含以下两个部分的内容 input_partitions描述一段SQL依赖的数据来源表分区里面存储的是分区名的列表如果整段SQL包含的所有表都是非分区表则显示为空。 input_tables描述一段SQL依赖的数据来源表里面存储的是Hive表名的列表。 3使用场景 explain dependency的使用场景有两个 场景一快速排除。快速排除因为读取不到相应分区的数据而导致任务数据输出异常。例如在一个以天分区的任务中上游任务因为生产过程不可控因素出现异常或者空跑导致下游任务引发异常。通过这种方式可以快速查看SQL读取的分区是否出现异常。 场景二理清表的输入帮助理解程序的运行特别是有助于理解有多重子查询多表连接的依赖输入。 六、explain authorization
1语法
explain authorization query; // query为需要查看执行计划的SQL语句2含义 通过explain authorization可以知道当前SQL访问的数据来源INPUTS 和数据输出OUTPUTS以及当前Hive的访问用户 CURRENT_USER和操作OPERATION。 3explain authorization查询示例
INPUTS: defaultstudent_tb_orc
OUTPUTS: hdfs://node01:8020/tmp/hive/hdfs/cbf182a5-8258-4157-9194- 90f1475a3ed5/-mr-10000
CURRENT_USER: hdfs
OPERATION: QUERY
AUTHORIZATION_FAILURES: No privilege Select found for inputs { database:default, table:student_ tb_orc, columnName:s_score}以上的内容来源网络仅供学习交流如有侵犯联系删除哦