如何为Apache Kylin快速开发新数据源?

452 阅读4分钟

在近期的Apache Kylin Innovation Meetup 上,Kyligence的技术合伙人兼生态合作技术总监李栋,与大家分享了Kylin的最新数据源开发功能。从Apache Kylin v1.6版本开始,Apache Kylin增加了对Kafka数据源的支持,打开了流式OLAP分析的大门。同时,随着越来越多的企业用户期望把传统数仓、数据库的数据也接入Apache Kylin做分析,从Apache Kylin v2.1版本开始支持JDBC数据源,满足用户对SQL on Hadoop、RDBMS等数据源中的数据进行OLAP分析探索的需求。


点击可播放完整视频


但是,JDBC数据源各不相同,想要深度实现某种数据源的对接,需要开发者投入大量精力对数据源做适配。因此Apache Kylin v2.6推出了Data Source SDK的功能,可以帮助开发者快速开发JDBC数据源的适配,实现新数据源的对接。

什么是Data Source SDK?


这套SDK是用于帮助开发者提高开发效率而生的,开发者可以使用这套Data Source SDK为某种数据源开发一个Adaptor,从而实现Apache Kylin从数据源中同步表、构建Cube、查询下压的需求。下图中黄色菱形块所示即为Data Source SDK提供的扩展接口。

首先,拿元数据同步来讲,标准的JDBC接口就实现了获取数据库、表、列的API。但不同数据库的实现方式可能不同,以及某些开发者不希望把系统库、系统表暴露给分析师,这些需求都可以在Adaptor中实现。

JDBC数据源构建的过程如下图所示,依赖sqoop在数据源中执行打平表的任务,然后把数据传送到Hadoop集群,然后通过一系列MapReduce或Spark任务执行后续构建任务。Adaptor在构建过程的主要作用是,将Apache Kylin产生的打平表SQL语句转化为数据源可支持的SQL方言。

在查询下压也是类似。Apache Kylin支持将无法命中Cube的查询路由到数据源引擎中执行,然后把结果返回给用户。Adaptor在查询下压中的过程也是实现SQL方言转换,把用户输入的SQL语句从Apache Kylin的SQL方言转换为底层数据源引擎的SQL方言。

如何开发一个Adaptor?


如下图所示,Data Source SDK实际为一组函数接口的集合,开发者只需按照数据源的特性,开发响应接口的实现即可。

默认的,Data Source SDK中自带了一个默认实现,基于这套默认实现,开发者仅通过添加一个XML格式的配置转换模板,即可完成某个数据源Adaptor的开发。
如下图所示,就是一个数据源的配置转换模板,模板中定义了对于特定SQL语法的配置、函数表达式和数据类型的表达方式。开发者只需按照这些配置项,根据数据源特性填写相应的配置,即可快速开发出一个新的数据源。如果有没有被该模板覆盖的需求,开发者依然可以重写接口函数,对默认实现进行扩展。

Apache Kylin解决方案


有了Data Source SDK的功能之后,Apache Kylin可以支持更加广泛的数据源,为企业进行大数据平台架构优化也带来了更多可能。
以前,报表等数据分析应用需要按场景对接多种底层技术,如多维分析对接Apache Kylin,灵活分析对接SQL on Hadoop;
现在,企业可以把Apache Kylin架构为统一的大数据OLAP平台,为BI应用提供统一的数据出口,简化系统架构和开发难度。

如上图右侧所示,我们使用Tableau报表做了测试:同样的报表在查询下压和访问Cube两种模式下执行,均能正常渲染,且无需修改报表内容,同时获得14倍的效率提升,可以有效帮助企业用户实现数据分析从传统技术向大数据平台的迁移

参考材料


本文仅对Data Source SDK的功能、框架做了简要介绍,如果您想了解更加深入的技术细节,请参考以下链接:
kylin.apache.org/development…
kylin.apache.org/blog/2019/0…

讲师PPT分享


联系我们:

info@kyligence.io

Kyligence 官网