Hive Hooks介绍
Hive作为SQL on Hadoop最稳定、应用最广泛的查询引擎被大家所熟知。但是由于基于MapReduce,查询执行速度太慢而逐步引入其他的近实时查询引擎如Presto等。值得关注的是Hive目前支持MapReduce、Tez和Spark三种执行引擎,同时Hive3也会支持联邦数据查询的功能。所以Hive还是有很大进步的空间的。
当然,诸如SparkSQL和Presto有着他们非常合适的应用场景,我们的底层也是会有多种查询引擎存在,以应对不同业务场景的数据查询服务。但是由于查询引擎过多也会导致用户使用体验不好,需要用户掌握多种查询引擎,而且要明确知道各个引擎的适用场景。而且多种SQL引擎各自提供服务会对数据仓库建设过程中的血缘管理、权限管理、资源利用都带来较大的困难。
之前对于底层平台的统一SQL服务有考虑过在上层提供一层接口封装,进行SQL校验、血缘管理、引擎推荐、查询分发等等,但是各个引擎之间的语法差异较大,想要实现兼容的SQL层有点不太现实。最近看了快手分享的《SQL on Hadoop 在快手大数据平台的实践与优化》,觉得有那么点意思。大家有兴趣的话可以看一看。
其实快手的实现核心逻辑是一样的,有一个统一的SQL入口,提供SQL校验,SQL存储、引擎推荐、查询分发进而实现血缘管理等。优秀的是它基于Hive完成了上述工作,将Hive作为统一的入口而不是重新包装一层。既利用了HiveServer2的架构,又做到了对于用户的感知最小。而实现这些功能的基础就是Hive Hooks,也就是本篇的重点。
Hook是一种在处理过程中拦截事件,消息或函数调用的机制。 Hive hooks是绑定到了Hive内部的工作机制,无需重新编译Hive。所以Hive Hook提供了使用hive扩展和集成外部功能的能力。 我们可以通过Hive Hooks在查询处理的各个步骤中运行/注入一些代码,帮助我们实现想要实现的功能。
根据钩子的类型,它可以在查询处理期间的不同点调用:
Pre-semantic-analyzer hooks
:在Hive在查询字符串上运行语义分析器之前调用。
Post-semantic-analyzer hooks
:在Hive在查询字符串上运行语义分析器之后调用。
Pre-driver-run hooks
:在driver执行查询之前调用。
Post-driver-run hooks
:在driver执行查询之后调用。
Pre-execution hooks
:在执行引擎执行查询之前调用。请注意,这个目的是此时已经为Hive准备了一个优化的查询计划。
Post-execution hooks
:在查询执行完成之后以及将结果返回给用户之前调用。
Failure-execution hooks
:当查询执行失败时调用。
由以上的Hive Hooks我们都可以得出Hive SQL执行的生命周期了,而Hive Hooks则完整的贯穿了Hive查询的整个生命周期。
对于Hive Hooks有了初步理解之后,后面我们会通过示例介绍如何实现一个Hive Hook,并且尝试一下如何基于Hive实现统一的SQL查询服务。
转载于:https://www.cnblogs.com/jixin/p/11197326.html
Hive Hooks介绍相关推荐
- Hive全面介绍(有点详细)
Hive有关介绍 Hive是什么 使用Hive的好处 Hive的特点 Hive架构 Hive工作原理 Hive的适用场景 Hive中表的分类 Hive与HBase的联系和区别 Hive与HBase的联 ...
- hive架构介绍、SQL引擎与NoSQL引擎的对比
hive架构介绍.SQL引擎与NoSQL引擎的对比 什么是hive? 什么是数据仓库? 数据仓库的构建过程 OLTP应用和OLAP应用 数据仓库中的数据模型 什么是hive HIVE的体系结构 hiv ...
- Hive体系结构介绍
http://www.aboutyun.com/thread-6217-1-1.html 1.Hive架构与基本组成 下面是Hive的架构图. 图1.1 Hive体系结构 Hive的体系结 ...
- Hadoop生态hive(三)Hive QL介绍
一.表 创建表 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name CREATE TABLE 创建一个指定名字的表.Hive 创建内部表时,会将数据移 ...
- 大数据离线分析工具Hive简单介绍
Hive是Facebook为了解决海量日志数据的分析而开发的,后来开源给了Apache软件基金会,可见Apache软件基金会是个神奇的组织,我们之前学过的很多开源工具都有Apache软件基金会的身影. ...
- react hooks介绍以及常用hooks列举
当你在使用React构建应用程序时,React Hooks是一种非常强大的功能,它可以使你更容易地处理组件状态和生命周期.它们允许你将逻辑与React组件分离,从而使代码更清晰.更可维护. React ...
- Hive详细介绍及简单应用
1. Hive基本概念 1.1 Hive简介 1.1.1 什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.1.2 ...
- 数据仓库——Hive入门介绍
一,什么是Hive: 1.Hive是建立在Hadoop HDFS上的数据仓库基础架构; 2.Hive可以用来进行数据提取转化加载(ETL) 3.Hive定义了简单的类似SQL查询语言,称为HQL它允许 ...
- React Hooks介绍
Hooks在React 16.8版本中正式被引入.它可以让你在不用写class的条件下使用state以及其他的React特性. const fn = () => {const [ ...
最新文章
- Yii学习笔记【3】
- java calendar.add方法_Java Calendar add()方法与示例
- Linux upstart启动方式详解
- UA MATH564 概率论IV 次序统计量
- Nginx + PHP CGI的fix_pathinfo安全漏洞
- 项目背景怎么描述_产品经理写简历,如何让「项目经验」更出众?
- 33 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义每一工厂的差异码
- 1090. Highest Price in Supply Chain (25)-PAT甲级真题
- FileZilla是一种快速 FTP 上传
- 在 Hibernate 中出现 database product name cannot be null 时怎么解决?
- 江苏计算机二级c语言考试范围,江苏省计算机二级C语言考试大纲
- 微信小程序封装api接口方法教程
- python模糊匹配_python 字符串模糊匹配 Fuzzywuzzy
- Odoo12功能模块文档整理
- Lucene实现全文检索
- 使用adb.exe禁止安卓手机app震动权限
- 并行查询的执行计划解读
- 变量命名20201106-01
- 【Python 基于EasyOCR库进行图片文字识别】
- 高德地图实现展示多个规划的路线
热门文章
- 如何在ngRepeat中使用Bootstrap Span元素
- OSI 认证的开源 License 有哪些?
- .NET Core 3.0 稳定版发布
- 使用NPOI——C#和WEB API导出到Excel
- 深入研究微服务架构——第一部分
- jq监听input type=file发生改变,即选择文件,并获取文件名称
- require.js引入css文件,[DikeJS]RequireJS引入CSS样式文件(五)
- php atan2,atan2l - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
- springboot中配置多数据源mybatisPlus
- 沃特玛采集均衡模块_云原生在京东丨云原生时代下的监控:如何基于云原生进行指标采集?...