做者:赵勇杰 何京珂
编辑:Sammihtml
在大数据时代,使用传统数据处理方式已经没法知足企业大规模数据的增加,而人工智能和 IoT 时代的到来让处理超大规模数据,解读超大规模数据的需求更加迫在眉睫。 分析和理解超大规模数据集就成为这些企业要解决的当务之急。前端
现代企业使用联机分析处理 ( OLAP ) 技术来分析数据,生成报表,从而帮助业务人员制订商务决策。随着大数据时代的来临和 Hadoop 技术的兴起,基于大数据平台的 OLAP 分析又给拥抱大数据的企业带来新的挑战。python
Apache Kylin[1] 做为 Apache 基金会首个开源的 OLAP 分析引擎,已在全球获得了普遍的应用。Kylin采起预计算技术,能够为分析师在超大规模数据集上(PB/TB 级)提供亚秒级查询能力。Kylin 专一于 OLAP 计算引擎,提供很精妙的技术设计: Kylin 的数据源除了能够来自于 Hadoop 上的 Hive 数仓,还能够接收 Kafka 传递而来的流式数据; Cube 构建引擎能够用 MapReduce,一些构建步骤为了性能考量还能够选择使用 Spark;构建好的 Cube 默认存储在 HBase 中; 查询则采用业界最广泛使用的 ANSI-SQL 查询,分析师原有的 SQL 查询、报表、分析等能够轻松迁移到 Kylin。react
查询接口上 Kylin 已经作到 ODBC/JDBC/RESTful 方式,这给第三方集成提供了巨大想像空间。git
这里请读者留意,Kylin 设计精妙是指,Kylin 松耦合的设计彻底可让数据源,计算引擎,Cube 存储根据您本身使用场景而来作个性化定制——选择权在您手里。github
• 高性能高并发: 支持TB到PB的数据规模上的亚秒级查询。sql
• 易于使用: 提供易用的 ODBC/JDBC/RESTful API 供使用和与第三方工具集成。数据库
• 经济性: 一次构建可以使得查询提速千百倍;查询越多越经济。apache
分析师期待能够快速的从不一样的角度分析数据的状况,Kylin 做为 OLAP 引擎能够实现亚秒级查询响应,很好地解决了分析师面临的一个查询等待个把小时的窘境;有了数据处理的引擎,企业在赋能其数据科学团队,工程师和业务分析师进行基于数据的业务决策时,在前端仍须要的丰富的可视化图形,排序过滤等基础报表需求,对于高级分析师,使用其熟悉的 SQL 对数据进行再次加工处理也是很是有必要的。浏览器
针对以上问题,一样做为 Apache 软件基金会正在孵化项目的 Superset 便成为不二之选.
Superset 是一个数据探索和可视化平台,设计用来提供直观的,可视化的,交互式的分析体验。
Superset 提供了两种分析数据源的方式:
用户能够以单表形式直接查询多种数据源,包括 Presto、Hive、Impala、SparkSQL、MySQL、Postgres、Oracle、Redshift、SQL Server、Druid 等。本文后续内容也会详细介绍Superset如何支持Kylin数据源。
一个 SQL 的 IDE 供高级分析师使用 SQL 查询定义所须要分析的数据集,这种方法使用户在一个查询中实现用 Superset 查询数据源的多表,并当即对查询进行可视化分析。
Superset 起源于 2015 年初黑客马拉松项目,曾经使用过 Caravel 和 Panoramix 做为项目名。如今主要维护小组是 Airbnb 数据科学组,代码托管在 Github。做为 Apache 软件基金会孵化项目,Superset 目标是要作成数据可视化平台。
Superset 对于数据源端经过一个成熟的 OR-Mapping 方案对接了几乎市面上全部数据库产品,数据的分析和建模再使用 Pandas 统一加工序列化后由前端渲染展现. 进而前端渲染出众多富有表现力的可视化图表,这些可视化技术包括但不限于: D3,react stack,mapbox,deck.gl。
笔者在使用 Superset 过程当中也感受到一些不足,例如没法经过权限隔离不一样用户可访问的数据源,数据查询暂时不支持下钻操做,多数据源不容易作交互查询等。可是瑕不掩瑜,Superset 依然是如今这个星球上最好的开源 BI 平台。
交互式分析是 Apache Kylin 与 Superset 共同的产品目标,使用 Kylin 做为 Superset 查询,数据通过 Kylin Cube 的预计算处理,在 Superset 前端进行可视化分析想必是快到飞起,真可谓是强强联合。
Kyligence 数据科学小组开源了 kylinpy 项目完成了 Kylin 与 Superset 数据源的集成。如今咱们就来手把手教读者实现 Kylin 和 Superset 的集成,并实现交互式的可视化分析。
1. 安装 Apache Kylin
请参考 Apache Kylin installation guide
2. Apache Kylin 提供了样例 Cube,方便你们学习使用。Kylin 启动成功后,能够在 Kylin 安装路径下运行如下命令生成样例数据 Cube:
./${KYLIN_HOME}/bin/sample.sh复制代码
运行后,使用默认的 Kylin 帐号 ADMIN / KYLIN 登录界面,在 System 页面点击 Reload Metadata 便可看到样例项目 Learn_kylin。
选择样例 Cube “Kylin_sales_cube”,点击 Action -> Build。选择日期不要晚于 2014-01-01 来进行全量构建。
点击前往 Monitor 页面查看 Cube 构建的进程,知道100%完成,Cube 就能够进行查询了。
前往 Insight 页面执行一个查询验证 Cube 可以返回结果。
select part_dt,
sum(price) as total_selled,
count(distinct seller_id) as sellers
from kylin_sales
group by part_dt
order by part_dt复制代码
查询会击中新构建的 Kylin_sales_cube。
3. 下面咱们安装 Superset,并初始化。
强烈建议使用虚拟环境来安装全部的依赖包(virtualenv/virtualenvwrapper)
pip install superset
fabmanager create-admin --app superset --username admin --password admin --firstname admin --lastname admin --email admin@fab.org复制代码
superset db upgrade复制代码
superset init复制代码
superset load_examples复制代码
4. 安装 kylinpy
pip install kylinpy复制代码
5. 安装验证,若是一切顺利,Superset daemon应该能够跑起来了
superset runserver -d
Starting server with command:
gunicorn -w 2 --timeout 60 -b 0.0.0.0:8088 --limit-request-line 0 --limit-request-field_size 0 superset:app
[2018-01-03 15:54:03 +0800] [73673] [INFO] Starting gunicorn 19.7.1
[2018-01-03 15:54:03 +0800] [73673] [INFO] Listening at: http://0.0.0.0:8088 (73673)
[2018-01-03 15:54:03 +0800] [73673] [INFO] Using worker: sync
[2018-01-03 15:54:03 +0800] [73676] [INFO] Booting worker with pid: 73676
[2018-01-03 15:54:03 +0800] [73679] [INFO] Booting worker with pid: 73679复制代码
如今全部的准备工做已经完毕,咱们来试试在 Superset 中建立一个 Apache Kylin 数据源。
1. 浏览器打开 http://localhost:8088 账号密码是刚才 fabmanager 建立的 admin/admin。
点击 Source —> Datasource,以下配置,注意以下几点:
kylin://<username>:<password>@<hostname>:<port>/<project name>复制代码
建立 Kylin 数据源
测试链接
链接成功后页面最下会展现这个 Kylin 项目内全部的表。
1. 点击 Source —> Tables,添加 Table,此处须要手动输入须要添加的表名。
2. 在全部列表中选定相应的表,就能够开始查询之旅啦。
熟悉 Kylin 的读者都知道,Kylin Cube 一般都是以多表关联建模为基础生成的,所以分析 Kylin Cube 的数据时,使用多表进行查询对于 Kylin 来讲是很是常见的场景。在使用 Superset 分析 Kylin 数据时,咱们可使用 Superset 中的 SQL Lab 功能来查询多表,并对其进行可视化分析。
在这里咱们以一个能够击中 Kylin 中的 sample cube ‘kylin_sales_cube’ 的查询为例。
查询返回后点击可视化按键便可针对当前查询进行可视化分析。
你能够复制下面的完整查询来体验 SQL Lab 查询 Kylin Cube 的功能。
select YEAR_BEG_DT,
MONTH_BEG_DT,
WEEK_BEG_DT,
META_CATEG_NAME,
CATEG_LVL2_NAME,
CATEG_LVL3_NAME,
OPS_REGION,
NAME as BUYER_COUNTRY_NAME,
sum(PRICE) as GMV,
sum(ACCOUNT_BUYER_LEVEL) ACCOUNT_BUYER_LEVEL,
count(*) as CNT
from KYLIN_SALES
join KYLIN_CAL_DT
on CAL_DT=PART_DT
join KYLIN_CATEGORY_GROUPINGS
on SITE_ID=LSTG_SITE_ID
and KYLIN_CATEGORY_GROUPINGS.LEAF_CATEG_ID=KYLIN_SALES.LEAF_CATEG_ID
join KYLIN_ACCOUNT
on ACCOUNT_ID=BUYER_ID
join KYLIN_COUNTRY
on ACCOUNT_COUNTRY=COUNTRY
group by YEAR_BEG_DT,
MONTH_BEG_DT,
WEEK_BEG_DT,
META_CATEG_NAME,
CATEG_LVL2_NAME,
CATEG_LVL3_NAME,
OPS_REGION,
NAME复制代码
使用 Superset 的多种功能查询 Apache Kylin
根据不少 Apache Kylin 用户在对接可视化及报表分析前端时,所提出的一些常见需求,咱们对S uperset 的相应功能也作了一些测试,能够说企业对于报表分析及可视化展示所须要的绝大部分功能,Superset 都已经能够提供了。
排序
Superset 支持使用任意数据源上定义的度量进行排序,不论这个度量是否在图表上。
过滤功能
在 Superset 中有多种过滤功能均可以使用在对 Kylin 的查询中。
1. 日期过滤
在 Superset 中你能够对定义为时间列的维度进行日期和时间的过滤。
2. 维度过滤
对于其余非时间维度,Superset 也提供了维度的筛选器,支持 SQL 中的 in,not in,等于,不等于,大于等于,小于等于,小于,大于,like 等多种过滤方式。
3. 报表内搜索
你能够在报表返回后使用搜索框功能对数据进行筛选。
4. 度量过滤
对于度量 Superset 支持用户直接写入 SQL 的having 表达式。
5. 联动过滤
使用 Superset 中提供的过滤框可视化组件,能够实现一个过滤器联动过滤多个可视化图形的效果。
以下图,过滤框组件能够联动控制仪表盘上的全部可视化图形。
6. Top N
你能够经过对数据进行排序和设置返回行数限制来实现展现 Top 10/Bottom 10 等功能。
7. 分页
在返回的数据量较大时,Superset 支持设置每页数据行数实现数据的分页。
8. 多种可视化
Superset 提供多样的可视化图表选择,这里仅以世界地图和睦泡图为例做为展现。
9. 其它功能
另外 Superset 还支持数据导出 CSV,报表分享,查看报表 SQL 等功能。
10. 中文支持
最重要的是,Superset 因为社区的贡献已提供了中文版本!
Superset 使用了 Flask 的翻译扩展工具 Flask-Babel ,使用了这个扩展包后,每一个对应的语言版本只须要在翻译文件中将对应的 Superset 文字翻译成中文便可,这使得 Superset 社区的中文用户能够很容易的贡献翻译内容。
多个开源项目的结合每每能产生1+1>2的效果,Kylin 专一于 OLAP 计算引擎,Superset 专一于数据可视化展示. 分析师手中的双剑合璧实现交互式分析,让企业使用大数据技术显著提高生产力。
【1】Apache Kylin