写点什么

openLooKeng 视图详解

作者:openLooKeng
  • 2021 年 11 月 22 日
  • 本文字数:1380 字

    阅读完需:约 5 分钟

openLooKeng视图详解

前言

视图是从一个或多个表导出的虚拟的表,区分权限是其重要作用之一。举个例子,在班级里,班主任需要掌握全班同学各科成绩,获悉整体状态以便全面指导,而数学老师只需要知道同学们的数学成绩。

数据库中我们常听到视图的说法。其实,大数据多源查询分析引擎 openLooKeng 也是有视图的概念,下面会以 Hive Connector 对存在的几种视图进行讲解。

VDM 连接器

这个是 openLooKeng 新开发的一个连接器,主要可使用场景如:在一些场景中,需要在同一个会话或视图中管理或访问多个数据源,同时,用户不需要关心数据的分布和来源。

虚拟数据市场(VDM)连接器旨在将该特性引入 openLooKeng。

VDM 连接器支持:

· 创建、更新和删除组合多个目录的视图

· 通过视图访问真实数据

· 通过视图管理用户权限

· 记录每个用户使用 VDM 视图的情况

具体的配置可以参考官网:

https://openlookeng.io/zh-cn/docs/docs/connector/vdm.html

根据官网的指导我们知道 VDM 连接器的后端存储可以支持 HDFS 和关系型数据库,这里采用的是 mysql 进行存储。



以上是基于 hive connector 中的一张 student 表创建了一个视图存储在 vdm 中。

View in Hive

除了上面的提到的 VDM 连接器外,openLooKeng 视图也可以存储在 Hive connector 中,我们可以按照官网的指导:

https://openlookeng.io/zh-cn/docs/docs/connector/hive.html

配置好 hive connector,这样我们可以参考上面的例子进行视图的创建和查询。



以上是基于 hive connector 创建的 openLooKeng 视图然后存储在 hive connector 中。

Hive View

所谓的 Hive view 其实就是在 hive 中创建的视图,openLooKeng 也支持访问 hive 中创建的视图,如下我们在 hive 中创建一个视图然后在 openLooKeng 中访问:

先在 beeline 中创建一个 hive view



然后我们在 openLooKeng 侧对这个视图进行查询,可以看到查询结果和 hive 中的一致的。



原理解析

这里主要介绍视图的创建和查询流程,如下图示为视图的创建流程:



当 openLooKeng 接收到创建视图请求时,会调用 DataDefinitionExecution 进行处理,然后再调用对应 MetaDataManager 处理,如果是 Hive 连接器则会调用 HiveMetadata 处理,VDM 连接器则会调用 VdmMetadata 处理,将 view 中相关的 sql 语句编码成 viewData,最后存储在 connector 中。

以下是视图的查询流程:



这个跟视图创建流程不太一样,当一个请求到达服务端时,由 SqlQueryExectuion 进行处理做语法解析,在做 visitTable 时,先通过 MetadataManager 通过对应连接器的 metadata 获取视图,hive 连接器则为 HiveMetadata,     VDM 则为 VdmMetadata,获取实际的 table,如果获取的 table 为视图,则递归再进行 StatementAnalyzer#paserView 和 #analyzeView 进行视图的解析,直到解析出最终的物理表为止。在 HiveMetadata#getView 时,如果是 Hive View 则由 HiveMetadata 转成 openLooKeng 的 view,再交给 StatementAnalyzer 做语法解析,这样处理流程就像 openLooKeng 的 view 一样处理了。

以上就是 openLooKeng 中视图的创建和查询流程。


# openLooKeng, Make Big Data Simplified

openLooKeng 是一款开源的高性能大数据多源分析引擎,提供统一的 SQL 接口,具备跨数据源\数据中心分析能力,为大数据用户提供极简的数据分析体验。如果您有任何想要交流的,欢迎在社区代码仓内提 Issue;也欢迎加小助手微信,进入专属技术交流群。

​社区官网 https://openlookeng.io

代码仓地址https://gitee.com/openlookeng

社区公众号 openLooKeng

社群小助手微信 openLooKengoss



发布于: 2021 年 11 月 22 日阅读数: 8
用户头像

openLooKeng

关注

愿景:让大数据更简单 2021.04.14 加入

openLooKeng是一款高效的数据虚拟化引擎,提供统一SQL接口,具备跨数据源/数据中心分析能力,致力于为用户提供极简的数据分析体验。社区官网:https://openlookeng.io

评论

发布
暂无评论
openLooKeng视图详解