一 什么是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架构及使用场景相关推荐

  1. BigData:大数据开发的简介、核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS、HBase、Hive}+Docker)、经典场景应用之详细攻略

    BigData:大数据开发的简介.核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS.HBase.Hive}+Docker).经典场景应用之详细攻略 BigData:大数 ...

  2. Hive 架构知识体系及语法详解

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 Hive:架构及知识体系 Hive是一个基于Hadoop的数据仓库,最初由Facebook提供,使用HQL作为查询接口.HDFS作为存储底层.mapR ...

  3. Apache Hive入门:模拟实现Hive功能、Hive架构、 组件

    一.Apache Hive概述 什么是Hive Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化.半结构化数据文件映射为一张数据库表,  基 ...

  4. hive架构介绍、SQL引擎与NoSQL引擎的对比

    hive架构介绍.SQL引擎与NoSQL引擎的对比 什么是hive? 什么是数据仓库? 数据仓库的构建过程 OLTP应用和OLAP应用 数据仓库中的数据模型 什么是hive HIVE的体系结构 hiv ...

  5. Hbase基础(特点、架构、应用场景、集群搭建、HA设计)这一篇就够了

    Hbase基础(特点.架构.应用场景.集群搭建.HA设计)这一篇就够了 1. Hbase特点 2. Hbase VS RDBMS 3. Hbase架构及版本选择 4. Hbase应用场景 5. Ntp ...

  6. Hive架构及安装部署(远程数据库模式MySQL)

    hive架构 hive部署 #hive安装 https://cwiki.apache.org/confluence/display/Hive/AdminManual+Metastore+Adminis ...

  7. 无服务器架构 - 从使用场景分析其6大特性

    2019独角兽企业重金招聘Python工程师标准>>> 无服务器架构 - 从使用场景分析其6大特性 博客分类: 架构 首先我应该提到,"无服务器"技术肯定有服务器 ...

  8. 大数据学习笔记44:Hive架构

    文章目录 一.Hive架构图 二.服务端组件 1.Driver组件 2.Metastore组件 3.Thrift服务 三.客户端组件 1.CLI - Command Line Interface 2. ...

  9. 一文读懂Hive(架构原理,DDL,常用函数,优化技巧)

    1.HIVE简介 1.什么是HIVE hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据: 可以将结构化的数据文件映射为一 ...

最新文章

  1. 使用JAX-RS创建RESTful Web Service
  2. Socket心跳包机制 .
  3. 红帽linux配置apache,红帽linux9中Apache服务器的配置
  4. 自定义sql_【PL/SQL 自定义函数】 常用场景
  5. java接收uniapp上传的图片_uni-app 上传图片的坑
  6. 软件测试 学习之路 MYSQL安装
  7. js constructor 和 instanceof
  8. 窗口变化相关消息 OnSize、OnSizing和OnGetMinMaxInfo
  9. PHP接口报错:500服务器错误
  10. 【大屏可视化模板】vue-dataV-echarts-elementul大屏数据可视化方案,屏幕适配方案等比例缩放
  11. 某知名网络安全公司的渗透测试工程师面试题实战汇总
  12. xul eclipse插件_将HTML元素添加到XUL插件
  13. 算法题:卖股票,求最大利润
  14. ITEXT处理pdf详解
  15. Windows技术文章汇集
  16. 非项目——产出物:改变的价值
  17. 群晖用php装aria2,NAS群晖DSM5.2小白教程:一行命令用 Docker 架设 aria2 服务 首发
  18. 美团点评校招内推啦!!!!
  19. JavaWeb-07-HTML学习笔记
  20. PROE技巧【显示隐含的对象】【隐藏坐标】

热门文章

  1. 邮件发送类_SpringBoot优雅地发送邮件
  2. 孪生网络Dataset
  3. XML DOM---解析xml dom
  4. java yml value_Spring Boot:从YAML文件加载@Value
  5. 双代号网络图节点编号原则_难倒一片的双代号网络图你学会了吗?
  6. 机器翻译学习1:pytorch官方教程与代码逐行详解
  7. python调用百度智能云API请求(以自然语言处理——词法分析为例)
  8. python获得距离指定(x,y)固定距离的全部坐标点
  9. MATLAB在运筹学背包问题的应用,运筹学论文之二维背包问题.docx
  10. git 小乌龟 配置_Git-Bash和TortoiseGit小乌龟客户端配置记录