mysql构建多维cube_kylin构建cube优化

前言

下面通过对kylin构建cube流程的分析来介绍cube优化思路。

创建hive中间表

kylin会在cube构建的第一步先构建一张hive的中间表,该表关联了所有的事实表和维度表,也就是一张宽表。

优化点:

1. hive表分区优化,在构建宽表的时候,kylin需要遍历hive表,事实表和维度表如果是分区表,那么会减少遍历时间

2. hive相关配置调整,join相关配置,mapreduce相关配置等

创建完成后,为了防止文件大小不一致的情况,kylin又基于hive做了一次重均衡操作,

`kylin.engine.mr.mapper-input-rows=1000000`,默认每个文件包含100w的数据量

代码 `CreateFlatHiveTableStep`

找出所有维度的基数

通过HyperLogLog 算法找出去重后的维度列,如果某个维度的基数很大,那么这种维度为被称为ultra high cardinality column(UHC),也就是超高基数维度。那么如何处理这类维度呢?

业务层处理UHC

比如时间戳维度基数可能是亿级的,可以转成为日期,基数降到几十万.

技术层处理UHC

kylin通过mapreduce进行此步骤,在reduce端,一个维度用一个reduce去重,因此当某个维度的基数很大时,会导致该维度所在的reduce运行很慢,甚至内存溢出,为了应对这种场景,kylin提供了两种解决方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值