hive架构及使用场景
一 什么是Hive,它能解决什么问题?
Hive是一个基于Hadoop的数据仓库平台。它通过HDFS进行存储,通过MapReduce执行查询计划,使用类SQL的查询语言HQL作为查询接口。
作用:可以很方便我们进行数据的ETL工作,避免了使用MapReduce来做如此复杂事情。
二 Hive的架构
三 Hive的原理
客户端发起查询请求,比如你在HiveShell发送一条HQL语句,会调用Cli.sh 并调用入口类CliDriver这个类
3.1解析参数,设置一些属性等
3.2创建ConsoleReader,不断的读取控制台参数,直到遇到分号为止
3.3判断这个语句是否编译过,如果没有编译需要先编译,调用Driver#compile方法:
3.3.1创建QueryState对象
3.3.2创建ParserDriver,调用ParserDriver#parse方法进行查询解析,生成ASTNode(抽象语法树),使用的是antlr(根据输入自动生成语法树的开源语法分析器):
生成ASTNode的规则:根据token 创建ASTNode
比如INSERT OVERWRITETABLE access_log SELECT a.user,a.prono,
p.maker,p.priceFROM access_log_hbase a JOIN product_hbase p ON
(a.prono= p.prono)
3.3.3创建语义分析器SemanticAnalyzer
通过SemanticAnalyzerFactory#get(conf,tree)传入的ASTNode的type创建不同的SemanticAnylyzer,这里应用的是简单工厂模式。
TOK_EXPLAIN=>ExplainSemanticAnalyzer
TOK_EXPLAIN_SQ_REWRITE=>ExplainSQRewriteSemanticAnalyzer
TOK_LOAD=>LoadSemanticAnalyzer
TOK_EXPORT=>ExportSemanticAnalyzer
TOK_IMPORT=>ImportSemanticAnalyzer
TOK_ALTERTABLE=>DDLSemanticAnalyzer
TOK_ALTERVIEW=>DDLSemanticAnalyzer
TOK_QUERY=>SemanticAnalyzer
TOK_CREATEFUNCTION、TOK_DROPFUNCTION=>FunctionSemanticAnalyzer
TOK_ANALYZE=>ColumnStatsSemanticAnalyzer
TOK_UPDATE_TABLE/TOK_DELETE_FROM=>UpdateDeleteSemanticAnalyzer
默认情况就是SemanticAnalyzer
3.3.4通过语义分析器BaseSemanticAnalyzer#analyze进行语义分析
#根据语法树创建解析树
=>分析和处理表的别名
=>分析创建表和视图的命令
=>分析form子句的子ASTNode
=>在这过程中,会往QueryBlock填充一些信息(QB: 查询的基本组成单元)
=>根据QB获取元数据:
"a":TableInfo("access_log_hbase")
"p":TableInfo("product_hbase")
#遍历QueryBlock, 根据解析树创建操作树OperatorTree
=>根据from从句得到所有的操作信息:循环递归子查询去填充执行计划部分的子查询;然后递归所有的源表,添加
hive架构及使用场景相关推荐
- BigData:大数据开发的简介、核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS、HBase、Hive}+Docker)、经典场景应用之详细攻略
BigData:大数据开发的简介.核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS.HBase.Hive}+Docker).经典场景应用之详细攻略 BigData:大数 ...
- Hive 架构知识体系及语法详解
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 Hive:架构及知识体系 Hive是一个基于Hadoop的数据仓库,最初由Facebook提供,使用HQL作为查询接口.HDFS作为存储底层.mapR ...
- Apache Hive入门:模拟实现Hive功能、Hive架构、 组件
一.Apache Hive概述 什么是Hive Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化.半结构化数据文件映射为一张数据库表, 基 ...
- hive架构介绍、SQL引擎与NoSQL引擎的对比
hive架构介绍.SQL引擎与NoSQL引擎的对比 什么是hive? 什么是数据仓库? 数据仓库的构建过程 OLTP应用和OLAP应用 数据仓库中的数据模型 什么是hive HIVE的体系结构 hiv ...
- Hbase基础(特点、架构、应用场景、集群搭建、HA设计)这一篇就够了
Hbase基础(特点.架构.应用场景.集群搭建.HA设计)这一篇就够了 1. Hbase特点 2. Hbase VS RDBMS 3. Hbase架构及版本选择 4. Hbase应用场景 5. Ntp ...
- Hive架构及安装部署(远程数据库模式MySQL)
hive架构 hive部署 #hive安装 https://cwiki.apache.org/confluence/display/Hive/AdminManual+Metastore+Adminis ...
- 无服务器架构 - 从使用场景分析其6大特性
2019独角兽企业重金招聘Python工程师标准>>> 无服务器架构 - 从使用场景分析其6大特性 博客分类: 架构 首先我应该提到,"无服务器"技术肯定有服务器 ...
- 大数据学习笔记44:Hive架构
文章目录 一.Hive架构图 二.服务端组件 1.Driver组件 2.Metastore组件 3.Thrift服务 三.客户端组件 1.CLI - Command Line Interface 2. ...
- 一文读懂Hive(架构原理,DDL,常用函数,优化技巧)
1.HIVE简介 1.什么是HIVE hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据: 可以将结构化的数据文件映射为一 ...
最新文章
- 使用JAX-RS创建RESTful Web Service
- Socket心跳包机制 .
- 红帽linux配置apache,红帽linux9中Apache服务器的配置
- 自定义sql_【PL/SQL 自定义函数】 常用场景
- java接收uniapp上传的图片_uni-app 上传图片的坑
- 软件测试 学习之路 MYSQL安装
- js constructor 和 instanceof
- 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo
- PHP接口报错:500服务器错误
- 【大屏可视化模板】vue-dataV-echarts-elementul大屏数据可视化方案,屏幕适配方案等比例缩放
- 某知名网络安全公司的渗透测试工程师面试题实战汇总
- xul eclipse插件_将HTML元素添加到XUL插件
- 算法题:卖股票,求最大利润
- ITEXT处理pdf详解
- Windows技术文章汇集
- 非项目——产出物:改变的价值
- 群晖用php装aria2,NAS群晖DSM5.2小白教程:一行命令用 Docker 架设 aria2 服务 首发
- 美团点评校招内推啦!!!!
- JavaWeb-07-HTML学习笔记
- PROE技巧【显示隐含的对象】【隐藏坐标】
热门文章
- 邮件发送类_SpringBoot优雅地发送邮件
- 孪生网络Dataset
- XML DOM---解析xml dom
- java yml value_Spring Boot:从YAML文件加载@Value
- 双代号网络图节点编号原则_难倒一片的双代号网络图你学会了吗?
- 机器翻译学习1:pytorch官方教程与代码逐行详解
- python调用百度智能云API请求(以自然语言处理——词法分析为例)
- python获得距离指定(x,y)固定距离的全部坐标点
- MATLAB在运筹学背包问题的应用,运筹学论文之二维背包问题.docx
- git 小乌龟 配置_Git-Bash和TortoiseGit小乌龟客户端配置记录