Apache Kylin 优化利器KyBot: Rowkey一键优化

在KyBot最新版本中,新增了Rowkey一键优化功能,可根据维度自身的数据特征以及用户的查询模式推荐给用户最优的Rowkey排序和编码建议。本文将介绍Rowkey的优化原理及使用方法。 Apache Kylin 简介 Apache Kylin是领先的开源OLAP on Hadoop引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力,支持海量数据上的亚秒级响应。 KyBot 简介 KyBot(http://kybot.io)是为Apache Kylin及其商业版KAP提供在线诊断及优化的平台。通过分析Kylin的日志等信息,为用户提供运维智能优化和Cube调优服务,包括诊断慢查询、Cube存储倾斜、Job构建瓶颈等功能、帮助用户降低运维成本、提高Hadoop集群利用率。在KyBot最新版本中,新增了Rowkey一键优化功能,可以根据维度自身的数据特征以及用户的查询模式推荐给用户最优的Rowkey排序和编码建议。 为什么要优化Rowkey? Apache Kylin使用HBase做为Cube的存储引擎。HBase是Hadoop上的Key-Value数据库,支持按Key的随机查询与写入,这个Key在HBase中称为Rowkey;为了能够支持按多个维度进行查询,Kylin需要将多个维度值以某种次序组成Rowkey。排在Rowkey靠前部分的维度,将比排在靠后部分的维度更易于做筛选(可以直接使得HBase Scan Range大幅缩小),因此查询效率更高。除了各维度在Rowkey上的次序外,维度的编码方法对于空间占用及查询性能也有着显著的影响。 Rowkey 优化原理 1、编码 对维度值编码,可以将值转成长度一致的字节,合适的编码能减少维度对空间的占用,Cube中可能存在数以亿计的行数,使用编码节约的空间累加起来将是一个非常巨大的数字,同时编码值也会加速查询过滤。 Kylin支持的编码类型如下: · Dict编码:使用字典将长的值映射成短的ID,适合中低基数的维度,默认推荐编码。但由于字典要被加载到Kylin内存中,在超高基情况下,可能引起内存不足的问题。 · Fixed_Length编码:适用于超高基场景,将选取字段的前N个字节作为编码值,当N小于字段长度,会造成字段截断,当N较大时,造成RowKey过长,查询性能下降。只适用于varchar或nvarchar类型。 · Fixed_Length_Hex编码:适用于字段值为十六进制字符,比如1A2BFF或者FF00FF,每两个字符需要一个字节。只适用于varchar或nvarchar类型。 · Integer编码:将数值类型字段直接用数字表示,不做编码转换。Integer编码需要提供一个额外的参数“Length”来代表需要多少个字节。Length的长度为1到8,支持的整数区间为[

KAP 2.4发布说明

Kyligence Analytics Platform(KAP) 大数据智能分析平台是基于Apache Kylin的企业级联机分析处理(OLAP, Online Analytical Process) on Hadoop解决方案。支持超大数据集上的亚秒级查询分析,提供互联网级的高并发能力,赋能分析师以行业标准数据仓库与商业智能(BI, Business Intelligence)实施方法论架构基于Hadoop的BI解决方案。 近期我们发布了KAP v2.4,在该版本中,KAP全面升级为HOLAP(Hybrid OLAP)架构,进一步支持主流SQL on Hadoop技术,满足更多分析场景。同时KAP v2.4丰富了语义层的表达能力,支持了雪花模型(Snowflake), 引入了可计算列(Computed Column),以支持用户将复杂的商业逻辑转化为合适的数据模型 。   引入HOLAP(Hybrid OLAP) 查询下压(Query Pushdown) 查询下压特性使得KAP能够将Kylin Cube不支持的查询下压到其他SQL引擎,内置支持Spark SQL及Hive,未来将进一步支持其他SQL on

【技术帖】KAP 2.4新特性:可计算列 Computed Column

作者: 何京珂 编辑:Sammi Kyligence Analytics Platform (KAP) 大数据智能分析平台是基于Apache Kylin的,在超大数据集上提供亚秒级分析能力的企业级数据仓库产品,为业务用户、分析师及工程师提供简便、快捷的大数据分析服务。在继承Apache Kylin的高性能查询、易用建模,多协议支持、非侵入式架构等突出优点的同时,KAP在企业用户所关注的实施效率、安全可控、性能优化、自助式敏捷BI、系统监控等方面进行了全方位的创新,被誉为目前最为成熟的OLAP on Hadoop产品。 概念介绍 如果你的源数据中没有你想要的数据,或者源数据中的列不能满足分析所需要的格式,现在你可以用KAP生成新的可计算列,并把它应用在Cube中,以利用Cube预计算而获得性能优势。举个例子,你可以使用销量减去成本计算出利润,或者你可以把数字文字混合的字段拆分成两个可计算列,你也可以使用函数对数据的类型进行转换。 你可以利用源数据中的字段搭配运算符或函数定义可计算列,如A= B*C 或A= Year (B)。可计算列是定义在KAP(Kylin)数据模型层上的,可计算列定义后在Cube构建阶段和一般源数据列无异,也会被一起进行预计算,这样一方面方便分析师灵活自主的创建所需的可计算列,另一方面也使可计算列利用预计算技术,充分发挥Cube的性能优势。 可计算列是KAP 2.4新推出的一个功能,下面我们就将详细介绍可计算列的使用方法。 使用引导 我们以Learn_kylin这个KAP自带的样例数据集为例子,介绍如何使用可计算列。关于样例数据集的具体介绍可以参考KAP用户手册中的介绍,这里不再做详细介绍(KAP用户手册:https://kyligence.gitbooks.io/kap-manual/content/zh-cn/model/sample_dataset.cn.html) 在KAP中打开learn_kylin自带的数据模型,点击下图箭头所示的计算器按钮,就可以创建可计算列。 首先我们建立几个简单的可计算列 total_sales=price*item_count part_year= year (part_dt) part_month