Apache Kylin

Ch03-Kylin 之 Query

June 12, 2021
Apache Kylin
Kylin

query 的整体执行流程如下图所示。可以看到整个 query 的逻辑实际上是由 QueryService 处理的,这里会做重要的路由处理,是执行 cube 的查询,还是下推到其他查询引擎,还是下推到 hive。这个路由逻辑简单来说,如下图所示: 完整的处理逻辑如下图所示: query 和 update 的逻辑如下所示: 1. Query # 在上图的 query 流程中,其实可以看到所有的处理过程最后会交给 calcite,而 calcite 的实现类 OLAPTableScan 会将 OLAPToEnumerableConverter 注册进来,最终在implement方法中完成 RelNode 到 Cube 处理逻辑的转换。 1.1 Cube 选取流程 # 整个过程封装在 RealizationChooser#selectRealization 中,大体上可以分为两步,第一部分是makeOrderedModelMap(),这一步会选出所有满足的 cuboid,第二步是selectRealization(),这一步骤会选出唯一一适合的 cuboid(如果所有的都合适的话,就选 set 里面遍历到的第一个)。详细可以分成下述几步来讲 1.1.1 对 model 及对应的 realizations 进行过滤及排序 # 获取属于该 project 下 factTableName 与查询中事实表相等的所有 realizations,factTableName 即 context.firstTableScan.getTableName 对 realizations 执行过滤,得到 filteredRealizations NOT READY cube 会被过滤 黑名单中的 cube 会被过滤 cube.allColumns 必须与 OLAPContext. ...

Ch01-Kylin 介绍

May 20, 2021
Apache Kylin
Kylin

Apache Kylin™是一个开源的、分布式的分析型数据仓库,提供 Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。它能在亚秒内查询巨大的表。

...