【转】kylin优化】的更多相关文章

转自: http://www.bitstech.net/2016/01/04/kylin-olap/ http://www.csdn.net/article/2015-11-27/2826343 http://tech.youzan.com/kylin-mondrian-saiku/ Apache Kylin对传统MOLAP的改进 计算Cube的存储代价以及计算代价都是比较大的, 传统OLAP的维度爆炸的问题Kylin也一样会遇到. Kylin提供给用户一些优化措施,在一定程度上能降低维度爆炸的…
kylin的核心优势在于使用额外的空间存储预计算的结果,以换取查询时间的缩减. 所以我们要对额外的空间进行优化,并且在空间优化之后,cuboid无法完全命中时,对查询时间进行优化. 空间优化的思路就是试图减少额外空间占用,最常用的就是剪枝优化.去掉那些多余的cuboid,减少预聚合的数量 查询时间优化就是针对存储引擎的优化,以hbase为例,其中包括,维度值的编码优化,rowkey按维度分片,调整rowkey生成的规则,降低精度要求,segment合并和清理,并发优化等. 剪枝优化的"多余&qu…
来自:AI前线(微信号:ai-front),作者:林兴财,编辑:Natalie作者介绍:林兴财,毕业于厦门大学计算机科学与技术专业.有多年的嵌入式开发.系统运维经验,现就职于四三九九网络股份有限公司,担任大数据开发工程师,主要负责大数据平台的规划建设. 本文介绍了 4399 大数据团队在公司大数据平台上应用 Kylin 的实践经验,并基于应用中遇到的问题给出了对应的优化建议.背 景 在开始案例分享前,先简单介绍一下 4399 以及 4399 的大数据团队 4399 是中国最早的和领先的在线休闲小…
http://blog.csdn.net/jiangshouzhuang/article/details/51286150 Hierarchies: 理论上对于N维度,我们可以进行2的N次方的维度组合.然而对于一些维度的组合来说,有时是没有必要的.例如,如果我们有三个维度:continent, country, city,在hierarchies中,最大的维度排在最前面.当使用下钻分析时,我们仅仅需要下面的三个维度的组合:group by continentgroup by continent,…
优化Cube 层次结构 理论上,对于N维,你最终会得到2 ^ N维组合.但是对于某些维度组,不需要创建这么多组合.例如,如果您有三个维度:洲,国家,城市(在层次结构中,“更大”维度首先出现).在深入分析时,您只需要以下三种组合组合: 按大陆分组 按大陆,国家分组 按大陆,国家,城市分组 在这种情况下,组合计数从2 ^ 3 = 8减少到3,这是一个很好的优化. YEAR,QUATER,MONTH,DATE案例也是如此. 派生列 派生列用于一个或多个维度(它们必须是查找表上的维度,这些列称为“派生”…
原文地址:https://kylin.apache.org/docs16/howto/howto_optimize_build.html Kylin将一个cube的build过程分解为若干个子步骤,然后串行执行这些子步骤.这些步骤包括Hive操作,MR任务和其他类型的工作.如果每天都有许多cube进行build操作,那么肯定会办法加速这一过程.这里有一些建议可以参考,我们就按照build的顺序依次介绍. Create Intermediate Flat Hive Table 该步骤会从源Hive…
前言 下面通过对kylin构建cube流程的分析来介绍cube优化思路. 创建hive中间表 kylin会在cube构建的第一步先构建一张hive的中间表,该表关联了所有的事实表和维度表,也就是一张宽表. 优化点: 1. hive表分区优化,在构建宽表的时候,kylin需要遍历hive表,事实表和维度表如果是分区表,那么会减少遍历时间 2. hive相关配置调整,join相关配置,mapreduce相关配置等 创建完成后,为了防止文件大小不一致的情况,kylin又基于hive做了一次重均衡操作,…
在以hbase为存储的cuboid中,会有很多计算好的数据行,这每个行的key都是由维度值按顺序生成的rowkey 而这个顺序,在我们做cube设计的时候是可以调整的. 具体调整路径是:cube designer -> advanced setting -> rowkey kylin会根据你设计的维度的顺序,去生成这个rowkey. 那么基于hbase的查询方式,我们可以优化这个顺序.具体步骤如下: 1.在查询中被用作过滤条件的维度有可能放在其他维度的前面 2.将经常出现在查询中的维度放在不经…
1.衍生维度. 在kylin中,如果某些维度都属于同一种类型,且数量较多,可以考虑做成衍生维度. 衍生维度就是将一批维度做成一张维度表,只在源表中保留这张表的外键,这样预处理的时候,就只会处理这个外键,而不会去处理维度表中的维度,降低cuboid的数量. 衍生维度用于在有效维度内将维度表上的非主键维度排除掉,在查询的时候实时进行聚合. 用衍生维度需要注意的一点是:如果从维度表主键到某个维度表维度所需要的聚合工作量非常大,那就不适合做衍生维度,实时进行聚合的时候会等待过长的时间. 2.使用聚合组…
我们知道,系统会对cuboid的数据进行分片处理. 但是默认的分片策略是随机的,如果group by a,b 的查询命中了某个cuboid,但是a=1 and b=1 的两条数据在不同的机器上存储, 那就要将这两条数据返回到存储引擎的driver(hbase里是coprocessor),再根据逻辑做聚合. 这样就产生了一个数据的优化空间. 如果我们将所有a 和b 值相同的数据都存在一台机器上, 那么我们就可以在返回driver的时候,先在本地进行聚合.这样不但节省了返回的数据量,也利用了各个机器…