大数据技术架构(组件)——Hive:流程剖析1

news2024/11/25 14:56:29

1.1、流程剖析

大致流程:

1、客户端连接到HS2(HiveServer2,目前大多数通过beeline形式连接,Hive Cli模式相对较重,且直接略过授权访问元数据),建立会话

2、提交sql,通过Driver进行编译、解析、优化逻辑计划,生成物理计划

3、对物理计划进行优化,并提交到执行引擎进行计算

4、返回结果

细节流程:

1、客户端和HiveServer2建立连接,创建会话

2、提交查询或者DDL,转交到Driver进行处理

3、Driver内部会通过Parser对语句进行解析,校验语法是否正确

4、然后通过Compiler编译器对语句进行编译,生成AST Tree

5、SemanticAnalyzer会遍历AST Tree,进一步进行语义分析,这个时候会和Hive MetaStore进行通信获取Schema信息,抽象成QueryBlock,逻辑计划生成器会遍历QueryBlock,翻译成Operator(计算抽象出来的算子)生成OperatorTree,这个时候是未优化的逻辑计划

6、Optimizer会对逻辑计划进行优化,如进行谓词下推、常量值替换、列裁剪等操作,得到优化后的逻辑计划。

7、SemanticAnalyzer会对逻辑计划进行处理,通过TaskCompiler生成物理执行计划TaskTree。

8、TaskCompiler会对物理计划进行优化,然后根据底层不同的引擎进行提交执行。

1.1.1、Analyze Sql

语法:

EXPLAIN [EXTENDED|CBO AST|DEPENDENCYAUTHORIZATION LOCKS VECTORIZATION ANALYZE] query

版本支持:

Hive0.14.0支持AUTHORIZATION;[HIVE-5961]

Hive2.3.0支持VECTORIZATION;[HIVE-11394]

Hive3.2.0支持LOCKS;[HIVE-17683]

Explain结果总共分为三个部分:

1、对应查询的抽象语法树 AST

2、每个计划阶段Stage之间的依赖关系

3、每个计划阶段的描述(可能是map/reduce,也可能是操作元数据或者文件操作)

聚合操作分析示例:

EXPLAIN FROM SrC INSERT OVERMRITE TABLE dest g1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key;

聚合操作分析输出信息:

STAGE DEPENDENCIES: --每个stage之间的依赖关系
    stage-1 is a root stage --Stage1是根阶段
    stage-2 depends on stages: stage-1 --当Stage1执行完成后才会执行stage2
    stage-0 depends on stages: stage-2 --当stage2执行完成后才会执行stage0
STAGE PLANS: --具体stage信息
    stage: stage-1
        Map Reduce--MapReduce阶段
            Alias ->Map Operator Tree: --map阶段从一个特定表或者上一个map/reduce阶段结果中读取
                src --表名
                    Reduce Output Operator
                        key expressions:
                            expr: key
                            type: string
                        sort order: +
                        Map-reduce partition columns:
                            expr: rand()
                            type: double
                        tag: -1
                        value expressions:
                            expr: substr(value, 4)
                            type: string
            Reduce Operator Tree: --执行部分聚合
                Group By Operator
                    aggregations:
                        expr: sum(UDFToDouble(VALUE.0))
                    keys:
                        expr: KEY.0
                        type: string
                    mode: partial1
                    File Output Operator
                        compressed: false
                        table:
                            input format: org.apache.hadoop.mapred.SequenceFileInputFormat
                            output format: org.apache.hadoop.mapred.SequenceFileOutputFormat
                            name: binary table
......

依赖分析示例:

EXPLAIN DEPENDENCY SELECT key, count(1) FROM srcpart WHERE dS IS NOT NULL GROUP BY key

依赖分析结果:

{
    "input_partitions": [
        {
            "partitionName": "default<at:var at:name=\"srcpart\"/>ds=2008-04-08/hr=11"
        },
        {
            "partitionName": "default<at:varat;name=\"srcpart\"/>ds=2008-04-08/hr=12"
        },
        {
            "partitionName": "default<at:varat;name=\"srcpart\"/>ds=2008-04-09/hr=11"
        },
        {
            "pantitionName": "default<at:var at:name= \"srcpart\"/>ds=2008-04-09/hr=12"
        }
    ],
    "input_tables": [
        {
            "tablename": "default@srcpart",
            "tabletype": "MANAGED_TABLE"
        }
    ]
}

分析实际数据量示例:

explain analyze select t1.user id,t2.visit url from wedw_tmp.tmp_url info t1 full join wedw_tmp.tmp_url info t2 on t1.user_id = t2.user_id;

分析实际数量结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169227.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OCR识别

阿里云和百度云识别&#xff0c;京东智能识别。 图片识别需求 1&#xff0c;拿到一个文件&#xff0c;2&#xff0c;变成InputStream 3&#xff0c;base64编码将流解析下载&#xff0c; 4 调用方法识别 1.身份证 2&#xff0c;行驶证 3&#xff0c;驾驶证 FileUtils file…

Elasticsearch:通过例子快速入门

Elasticsearch 是业界最流行的开源企业搜索引擎&#xff0c;应用广泛。 在我们的手机里的 App 背后的搜索引擎好多都是 Elasticsearch&#xff0c;比如我们熟知的抖音&#xff0c;滴滴&#xff0c;美团&#xff0c;携程&#xff0c;点评&#xff0c;银行 app&#xff0c;保险&a…

ssh反向代理实现内网穿透【亲测可用】

常用内网穿透方式 1、网卡层映射&#xff0c;包括购买公网ip 推荐指数&#xff1a;&#x1f44d;&#x1f3fb;&#x1f44d;&#x1f3fb;&#x1f44d;&#x1f3fb;&#x1f44d;&#x1f3fb;&#x1f44d;&#x1f3fb;。 缺点&#xff1a;主要申请困难。 2、自己搭建内网…

JavaWeb-HTTPTomcatServlet

JavaWeb-HTTP&Tomcat&Servlet 1&#xff0c;Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网&#xff0c;也称为万维网(www)&#xff0c;能够通过浏览器访问的网站。 在我们日常的生活中&#xff0c;经常会使用浏览器去访问百度、京东、传智官网等这些网站&#xf…

韩顺平老师的linux基础课(复习笔记)

今天听了韩老师的课程&#xff0c;深受启发啊&#xff01;&#xff01;&#xff01; 卖油翁的“我亦无他&#xff0c;唯手熟尔”&#xff0c;只是手法熟练罢了&#xff01;&#xff01; 还有老黄牛的坚持&#xff0c;别人把时间都放在努力上&#xff0c;而我把时间放在选择上&a…

微信小程序分类菜单激活状态跟随列表滚动自动切换

这里主要用到微信小程序提供的SelectorQuery获取页面节点信息实现&#xff0c;组件用的是微信小程序的scroll-view 逻辑就是获取右侧盒子的节点信息&#xff0c;获取右侧子分类的节点信息&#xff0c;当子分类滑动到顶部的之后&#xff0c;则切换左侧分类状态&#xff0c;而且当…

【java】冒泡排序/选择排序/希尔排序

文章目录排序分类/排序算法的分类冒泡排序代码1&#xff1a;代码2&#xff08;优化代码3&#xff08;算法优化 --当次排序没有进行交换则退出循环代码4&#xff08;封装为方法代码5&#xff08;检测冒泡排序时间复杂度选择排序代码1代码2&#xff08;优化算法代码3&#xff08;…

FinalShell的下载安装简单使用

目录 一、下载 二、安装 三、简单使用 一、下载 下载地址&#xff1a;SSH工具 SSH客户端 1、进去后选择第一个 FinalSheel SSH工具,远程桌面加速软件,支持Windows,macOS,Linux,版本3.9.7,更新时间2022.10.26&#xff1b; 2、选择需要的版本下载&#xff0c;我选择的是&…

80. 循环神经网络的简洁实现

虽然从零开始实现循环神经网络对了解循环神经网络的实现方式具有指导意义&#xff0c;但并不方便。 本节将展示如何使用深度学习框架的高级API提供的函数更有效地实现相同的语言模型。 我们仍然从读取时光机器数据集开始。 import torch from torch import nn from torch.nn i…

【SpringCloud13】SpringCloud Config分布式配置中心

1.概述 1.1 分布式系统面临的配置问题 微服务意味着要将单体应用中的业务拆分成一个个子服务&#xff0c;每个服务的粒度相对较小&#xff0c;因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行&#xff0c;所以一套集中式的、动态的配置管理设施是必不…

PointNext论文解读

论文地址&#xff1a;https://arxiv.org/abs/2206.04670 github地址&#xff1a;GitHub - guochengqian/PointNeXt: [NeurIPS22] PointNeXt: Revisiting PointNet with Improved Training and Scaling Strategies 本文主要提出优化PointNet的两大关键点. 1) 好的训练策略 2…

如何搭建一个专业的知识库

当客户跟你达成合作关系后&#xff0c;需要持续的关系维护&#xff0c;在一定的销售点&#xff0c;定期和客户沟通&#xff0c;据调查&#xff0c;赢得一个新客户的成本可能是保留一个现有客户的5到25倍&#xff0c;作为营销策略&#xff0c;客户服务支持必须满足他们的期望。建…

[BJDCTF2020]Easy MD5(浅谈PHP弱类型hash比较缺陷)

目录 信息收集 构造payload PHP弱类型hash比较缺陷 0e碰撞 数组MD5 总结 信息收集 看题目应该和MD5加密相关 select * from admin where passwordmd5($pass,true) PHP的MD5函数 string必需。规定要计算的字符串。raw 可选。规定十六进制或二进制输出格式&#xff1a; …

2023-01-17 PostgreSQL 并行查询概述

简介&#xff1a; 大数据时代&#xff0c;人们使用数据库系统处理的数据量越来越大&#xff0c;请求越来越复杂&#xff0c;对数据库系统的大数据处理能力和混合负载能力提出更高的要求。PostgreSQL 作为世界上最先进的开源数据库&#xff0c;在大数据处理方面做了很多工作&…

详谈ORB-SLAM2的单目初始化器Initializer

单目初始化器Initializer类&#xff0c;这个类只用于单目初始化&#xff0c;因为这是ORB-SLAM里遗留的一个类&#xff0c;也是祖传代码&#xff0c;双目和RGBD相机只需要一帧就能初始化&#xff0c;因为双目和RGBD相机拍到的点都是有信息的&#xff0c;但是单目相机就不一定了&…

六种方法在云平台和远程桌面中使用Kali

一、说明 本篇主要介绍方便在云服务器&#xff0c;或者以远程桌面&#xff08;GUI&#xff09;形式使用kali配置教程&#xff0c;帮助渗透更加方便顺利。 二、方法 2.1 方法一 云服务提供商预装 备注&#xff1a;预算充足&#xff0c;可以首考虑此方法 优点&#xff1a; 云服…

java 探花交友项目实战 day3 完善个人信息 阿里云OSS文件存储 百度人脸识别

完善用户信息 业务概述 阿里云OSS Data ConfigurationProperties(prefix "tanhua.oss") public class OssProperties { private String accessKey; private String secret; private String bucketName; private String url; //域名 private Strin…

微分方程的特征值解法:斯图姆-刘维尔方程

一.基础概念 前置:福克斯定理和奇点理论 常点的级数解 奇异点的级数解 则至少存在一个如下形式的解(弗罗贝尼乌斯级数): 19世纪中期,常微分方程的研究到了新的阶段,存在定理和斯图姆-刘维尔理论都假设微分方程区域内含解析函数或至少包含连续函数,而另一方面,以前研究…

东莞注塑MES管理系统具有哪些功能

伴随着人们对于物质生活的品质要求越来越高&#xff0c;日用品、医疗保健、汽车工业、电子行业、新能源、家电、包装行业以及建筑等行业对注塑产品的需求量日益突出。注塑企业提供的各种各样的塑料产品已渗透到经济生活的各个领域&#xff0c;为国家经济的各个部门包括轻工业和…

ARM SD卡启动详解

一、主流的外存设备介绍 内存和外存的区别&#xff1a;一般是把这种 RAM(random access memory&#xff0c;随机访问存储器&#xff0c;特点是任意字节读写&#xff0c;掉电丢失)叫内存&#xff0c;把 ROM&#xff08;read only memory&#xff0c;只读存储器&#xff0c;类似…