栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

从Kylin看看Calcite的使用方式

从Kylin看看Calcite的使用方式

文章目录

前言文件概览

ParseValidateconvertoptimize 单测分析

ParseValidateConvertOptimize

前言

之前分析了Flink中如何使用Calcite的,这次再来看看Kylin。与Flink直接使用Calcite的社区版本不同,Kylin单独维护了一个自己版本的Calcite

这种方式优点是遇到能够更深入的开发一些社区不具备的功能,缺点是和社区同步升级成本较高(Calcite的社区版本已经到1.30.0了,Kylin还是在1.16.0的基础上发版)

文件概览

先粗略的看看Calcite解析优化query的几个阶段,Kylin都编写了哪些文件

Parse

Kylin只做DQL,又是比较严格的标准SQL,所以对Calcite在语法上的新增不多

Validate

Validate都是直接用的SqlValidatorImpl,而不是Flink那样继承SqlValidatorImpl

类型也只是稍微作了调整

convert

接下来的convert是用的SqlToRelConverter

optimize

没有新增HepPlanner和VolcanoPlanner,只是新增了一些OLAPRelNode

单测分析

在Kylin的单测中有一个QueryConnectionTest和Calcite的JdbcTest很像,但它只有一个测试方法

执行的流程和Calcite的差不多

Parse

SqlParserImpl也是用JavaCC代码生成的

Validate

validateQuery的入口,对SqlNode进行递归的校验

Convert

将SqlNode转为RelNode

Optimize

Convert完了后到Hepplanner进行优化,不过这个qury比较简单没什么需要优化的

大部分代码都直接复用着Calcite的,只是在某些细节进行调整并没有像Flink那样大量的继承重写某个Calcite的类

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/728203.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号