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介绍相关推荐

  1. Hive全面介绍(有点详细)

    Hive有关介绍 Hive是什么 使用Hive的好处 Hive的特点 Hive架构 Hive工作原理 Hive的适用场景 Hive中表的分类 Hive与HBase的联系和区别 Hive与HBase的联 ...

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

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

  3. Hive体系结构介绍

    http://www.aboutyun.com/thread-6217-1-1.html   1.Hive架构与基本组成 下面是Hive的架构图. 图1.1 Hive体系结构     Hive的体系结 ...

  4. Hadoop生态hive(三)Hive QL介绍

    一.表 创建表 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name CREATE TABLE 创建一个指定名字的表.Hive 创建内部表时,会将数据移 ...

  5. 大数据离线分析工具Hive简单介绍

    Hive是Facebook为了解决海量日志数据的分析而开发的,后来开源给了Apache软件基金会,可见Apache软件基金会是个神奇的组织,我们之前学过的很多开源工具都有Apache软件基金会的身影. ...

  6. react hooks介绍以及常用hooks列举

    当你在使用React构建应用程序时,React Hooks是一种非常强大的功能,它可以使你更容易地处理组件状态和生命周期.它们允许你将逻辑与React组件分离,从而使代码更清晰.更可维护. React ...

  7. Hive详细介绍及简单应用

    1. Hive基本概念 1.1  Hive简介 1.1.1 什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.1.2 ...

  8. 数据仓库——Hive入门介绍

    一,什么是Hive: 1.Hive是建立在Hadoop HDFS上的数据仓库基础架构; 2.Hive可以用来进行数据提取转化加载(ETL) 3.Hive定义了简单的类似SQL查询语言,称为HQL它允许 ...

  9. React Hooks介绍

            Hooks在React 16.8版本中正式被引入.它可以让你在不用写class的条件下使用state以及其他的React特性. const fn = () => {const [ ...

最新文章

  1. Yii学习笔记【3】
  2. java calendar.add方法_Java Calendar add()方法与示例
  3. Linux upstart启动方式详解
  4. UA MATH564 概率论IV 次序统计量
  5. Nginx + PHP CGI的fix_pathinfo安全漏洞
  6. 项目背景怎么描述_产品经理写简历,如何让「项目经验」更出众?
  7. 33 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义每一工厂的差异码
  8. 1090. Highest Price in Supply Chain (25)-PAT甲级真题
  9. FileZilla是一种快速 FTP 上传
  10. 在 Hibernate 中出现 database product name cannot be null 时怎么解决?
  11. 江苏计算机二级c语言考试范围,江苏省计算机二级C语言考试大纲
  12. 微信小程序封装api接口方法教程
  13. python模糊匹配_python 字符串模糊匹配 Fuzzywuzzy
  14. Odoo12功能模块文档整理
  15. Lucene实现全文检索
  16. 使用adb.exe禁止安卓手机app震动权限
  17. 并行查询的执行计划解读
  18. 变量命名20201106-01
  19. 【Python 基于EasyOCR库进行图片文字识别】
  20. 高德地图实现展示多个规划的路线

热门文章

  1. 如何在ngRepeat中使用Bootstrap Span元素
  2. OSI 认证的开源 License 有哪些?
  3. .NET Core 3.0 稳定版发布
  4. 使用NPOI——C#和WEB API导出到Excel
  5. 深入研究微服务架构——第一部分
  6. jq监听input type=file发生改变,即选择文件,并获取文件名称
  7. require.js引入css文件,[DikeJS]RequireJS引入CSS样式文件(五)
  8. php atan2,atan2l - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  9. springboot中配置多数据源mybatisPlus
  10. 沃特玛采集均衡模块_云原生在京东丨云原生时代下的监控:如何基于云原生进行指标采集?...