Kyligence AI 服务 - 让大模型完成准确、可靠的数值计算和回答! 立即了解更多
AI 数智助理
Kyligence Zen Kyligence Zen
Kyligence Enterprise Kyligence Enterprise
Kyligence Turbo Kyligence Turbo
指标平台解决方案
OLAP 解决方案
行业解决方案
客户总览
金融
零售
制造
医药
其他
云平台
BI
寻求合作
资源
Kyligence Enterprise
Kyligence Zen
培训
Apache Kylin
Byzer
Gluten
博客
关于
市场活动
在KyBot最新版本中,新增了Rowkey一键优化功能,可根据维度自身的数据特征以及用户的查询模式推荐给用户最优的Rowkey排序和编码建议。本文将介绍Rowkey的优化原理及使用方法。
Apache Kylin 简介
Apache Kylin是领先的开源OLAP on Hadoop引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力,支持海量数据上的亚秒级响应。
KyBot 简介
KyBot(https://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,支持的整数区间为[ -2^(8*N-1), 2^(8*N-1)] · Date编码:将日期类型的数据使用三个字节进行编码,支持的格式包括yyyyMMdd、yyyy-MM-dd、yyyy-MM-dd HH:mm:ss、yyyy-MM-dd HH:mm:ss.SSS,其中如果包含时间戳部分会被截断。 · Time编码:对时间戳字段进行编码,支持范围为[ 1970-01-01 00:00:00, 2038/01/19 03:14:07],毫秒部分会被忽略。time编码适用于time, datetime, timestamp等类型。 · Boolean编码:用一个byte表示布尔值,适用于字段值为: true, false, TRUE, FALSE, True, False, t, f, T, F, yes, no, YES, NO, Yes, No, y, n, Y, N, 1, 0
2、Rowkey 顺序
Kylin会将查询条件,转换成HBase中Range Scan操作的start_key和end_key两个参数。设计良好的Rowkey将更有效地完成数据的查询过滤和定位,减少IO次数,提高查询速度,维度在rowkey中的次序,对查询性能有显著的影响。
在调整Rowkey 的顺序时需要结合以下2个原则: · 在查询中被用作过滤条件的维度放在非过滤条件维度的前面 · 基数较高的维度,放在基数较低维度之前 从上可以看出,良好的Rowkey设计需要Cube设计者掌握复杂的编码原理以及Kylin的核心知识,对于大多数用户来说具有一定难度。用户期望有智能工具能给予自动的推荐。
使用KyBot优化
如图1所示,在Cube调优页面的Rowkey模块,可以查看到Rowkey的基础信息和查询统计。基础信息包含基数、字段类型、编码以及是否为shardby 。查询统计包含维度出现的频次、作为过滤条件出现的次数占比、作为聚合条件出现的占比。并且,基数、出现频次、过滤百分比及聚合百分比都支持排序,用户可从多个角度对Rowkey进行洞悉,譬如按照基数降序排列,基数较大的Rowkey可以考虑前置;按照过滤出现次数占比排序,比例较高的Rowkey可以考虑前置。
图1 Rowkey一键优化前
KyBot不仅分析了当前Rowkey设计的有效性,最新支持的“Rowkey智能推荐“更直接给出了建议的解决方案。如下图2所示。点击左上角的“建议设置”按钮后,可以看到整个Rowkey进行了重新排序,不合适的编码也被标示了出来,并且给出了建议的编码。在这个例子中,基数较大和过滤次数较多的Rowkey[KYLIN-SALES.CATAGORY-CODE] [KYLIN-SALES.USER_NAME][KYLIN_SALES.SECTION_CODE][KYLIN_SALES.SECTION_NAME]排序被前置;[KYLIN_SALE.USER_NAME]是超高基数,用dict编码容易造成构建引擎或查询引擎的内存溢出,建议使用fixed_length编码;[KYLIN_SALES.SELLER_ID]是编码int64类型的整数,length设为8更合适。
图2 Rowkey一键优化后
Rowkey 一键优化功能为用户推荐了更合适的编码算法和Rowkey排序,这些推荐能力建立在对数据特性以及查询模式的深入理解上,所以上传的诊断包越多,查询信息越多,建议越精确。 无需自行分析,就可以得到最优的Rowkey建议,想要深究的用户也可以通过本文所提到的Rowkey设计原理,结合KyBot 展示的信息及对业务的理解,自行进行优化。
近年来,随着商业环境的竞争日益激烈,企业对于实时数据服务的需求急剧增加。Kyligence 在服务众多客户的过
数据要素在银行各业务领域和流程中发挥着至关重要的作用,面对激烈的市场竞争和客户需求,银行越来越注重从数据管理中
作为一名消费者,炎热的夏天我们会走进一家便利店,从冰柜中选出一瓶汽水;下午工作有点累了,我们会在公司的自动贩卖
2024 年伊始,Kyligence 联合创始人兼 CEO 韩卿(Luke)分享了对 AI 与数据行业的一些战
房地产行业是我国国民经济中的重要支柱产业之一,在房地产市场供求关系发生重大变化的当下,房企面临多重挑战。Kyl
今年年初,Kyligence 高级副总裁兼合伙人葛双寅(Silas Ge)受邀在阿斯利康“跃行致远三十周年年会
2024 年伊始,Kyligence 联合创始人兼 CEO 韩卿在公司内部的飞书订阅号发表了多篇 Rethin
400 8658 757
工作日:10:00 - 18:00
已有账号? 点此登陆
预约演示,您将获得
完整的产品体验
从数据导入、建模到分析的全流程操作演示。
行业专家解惑
与资深行业专家的交流机会,解答您的个性化问题。
请填写真实信息,我们会在 1-2 个工作日内电话与您联系。
全行业落地场景演示
涵盖金融、零售、餐饮、医药、制造等多个行业,最贴合您的业务需求与场景。
Data + AI 应用落地咨询
与资深技术专家深入交流,助您的企业快速落地 AI 场景应用。
立即预约,您将获得
精准数据计算能力:
接入高精度数值计算大模型服务,为您的企业级AI应用提供强大支持。
个性化业务场景解决方案:
量身定制的计算模型和数据分析服务,切实贴合您的业务需求和应用场景。
Data + AI 落地应用咨询:
与资深专家深入探讨数据和 AI 如何帮助您的企业加速实现应用落地,构建更智能的数据驱动未来。
申请体验,您将获得
体验数据处理性能 2x 加速
同等规模资源、同等量级数据、同一套数据处理逻辑,处理耗时下降一半
专家支持
试用部署、生成数据、性能对比各操作环节在线支持