Apache Kylin:万亿数据秒级查询的 OLAP 引擎 文章目录Apache Kylin万亿数据秒级查询的 OLAP 引擎5.0 版本更新了什么预计算到底好在哪建模这件事变简单了部署和上手Apache Kylin万亿数据秒级查询的 OLAP 引擎做大数据分析的人大概都遇到过这个问题数据量一大查询就慢得离谱。1 亿条数据查 1 分钟100 亿条就得等将近两小时。业务方催得紧你只能干瞪眼。Apache Kylin 就是来解决这个问题的。它是一个开源的 OLAP 引擎核心思路是预计算。简单说就是在数据写入的时候提前算好各种维度组合的聚合结果查询的时候直接拿现成的结果不用现场扫全表。这样不管数据量多大查询响应都能控制在秒级。这个项目最早是 eBay 在 2014 年开源的2015 年就成了 Apache 顶级项目。到现在快十年了全球几千家公司在用。5.0 版本更新了什么Kylin 最近发了 5.0 版本变化不小。第一个是内部表功能。以前 Kylin 只能基于外部数据源建模现在支持直接在引擎内部管理数据查询更灵活也能适配湖仓一体的场景。第二个是模型和索引推荐。以前建模是个技术活得懂多维建模理论手动设计维度、度量、关联关系。现在可以把 SQL 文本直接导入系统自动分析生成模型。还能根据历史查询记录推荐索引优化方案不用自己反复调优。第三个是换了计算引擎。5.0 集成了 Gluten-ClickHouse 作为底层计算引擎性能比原来用的 vanilla Spark 提升了 2 到 4 倍。模型查询和内部表查询都能受益。第四个是支持流式数据源。现在可以用 Kafka 作为数据源来构建模型实现流批一体分析。以前只能处理离线批量数据现在实时数据也能跑了。预计算到底好在哪Kylin 的核心竞争力在于预计算。传统 OLAP 引擎在查询时才做聚合计算数据量越大越慢。Kylin 反过来把计算前置到数据写入阶段查询时直接读取预计算好的结果。这里面有几个关键概念。维度是观察数据的角度比如商品类别、地区、时间。度量是要聚合的值比如销售额、订单数。预计算就是把维度的各种组合和对应的度量聚合结果提前算好存成索引。索引分两种。聚合索引处理某个年份的总销售额这类汇总查询。明细索引处理某个用户最近 100 笔交易这类细节查询。两种索引配合使用覆盖大部分分析场景。当然Kylin 也不是只靠预计算。它也支持部分运行时计算能力比如表快照、运行时关联、内部表查询用来处理那些不适合预计算的场景。建模这件事变简单了5.0 之前用 Kylin 建模门槛不低。你得理解星型模型、雪花模型知道怎么设计维度和度量怎么处理表关联。这对很多团队来说是个障碍。5.0 引入的推荐引擎改变了这个局面。你可以直接把业务 SQL 语句丢进去系统自动解析出需要的表、维度、关联关系生成模型。系统还能分析查询历史自动发现哪些索引是多余的哪些组合是高频查询但没有索引覆盖的。这个思路挺务实的。与其让用户从零学建模理论不如从实际查询出发让系统帮你搞定。部署和上手Kylin 提供了 Docker 镜像本地跑一条命令就能启动体验环境。镜像里包含了完整的 Kylin 5.0 环境开箱即用。项目代码在 GitHub 上Apache 2.0 协议可以自由使用和修改。有详细的文档覆盖安装部署、模型设计、索引优化、运维管理各个方面。如果你的业务场景是大规模数据的多维分析查询延迟是硬指标Kylin 值得花时间研究一下。特别是升级到 5.0 之后建模门槛降低了计算性能提升了适用范围比以前更广。得花时间研究一下。特别是升级到 5.0 之后建模门槛降低了计算性能提升了适用范围比以前更广。