如何为Apache Kylin快速开发新数据源?
但是,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的功能、框架做了简要介绍,如果您想了解更加深入的技术细节,请参考以下链接:
http://kylin.apache.org/development/datasource_sdk.html
http://kylin.apache.org/blog/2019/01/16/introduce-data-source-sdk-v2.6.0
更多问题,欢迎留言。
关于 Apache Kylin
Apache Kylin 是全球领先的、开源的大数据 OLAP引擎,于 2014年10月开源,2015年11月毕业成为 Apache 软件基金会 Top-Level 项目,Apache Kylin 已经成为领先的开源大数据 OLAP 引擎。Kylin 为万亿数据提供亚秒级查询,并可以和现有的 Hadoop/Spark 及 BI 无缝集成。Kylin 是大数据版图中一个强有力的框架,也已被全球上千家组织所采用。
联系我们
网站:http://kylin.apache.org/
邮件:info@kyligence.io
电话: +86 21-61060928
"Apache and Apache Kylin are either registered trademarks or trademarks of The Apache Software Foundation in the US and/or other countries. No endorsement by The Apache Software Foundation is implied by the use of these marks."