Apache Kylin 高基数维度处理 以及 其他优化

Apache Kylin在处理高基数维度时可能会遇到性能挑战,包括实时计算消耗大、内存溢出等问题。解决方案包括调整Hive字段类型为decimal,配置`kylin_job_conf.xml`以应对`GC limit exceeded`和`OutOfMemory`错误,优化维度组策略,将高基数维度置于RowKey前列并启用sharding,以及对count distinct操作进行专门的ColumnFamily设置。此外,通过设置维度字段同时作为度量,可以实现更灵活的查询需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kylin的查询的时候,如果查询的维度在同一个聚合组,kylin会直接去HBase取到预计算的值,如过查询的维度不在同一个维度组,kylin会根据进行实时计算,这个过程类似build过程中的计算,并且会在monitor上使用slow query记录这些需要实时计算的sql,我们可以根据slow query来进行维度组的优化。

第一个问题:
在Tableau中显示的度量值如果是SUM计算,那么在Hive中最好使用的字段类型为decimal(20,0),避免使用int以及bigint。

第二个问题:
高基数维度的Cube在构建过程中报错
GC limite exceeded 以及 java.lang.OutOfMemoryError: Java heap space

解决办法:在${KYLIN_HOME}/conf/kylin_job_conf.xml中添加配置项如下:

<property>
        <name>mapreduce.map.java.opts.max.heap</name>
       <value>983</value>
    </property>
    <property>
        <name>mapreduce.reduce.java.opts.max.heap</name>
        <value>983</value>
    </property>
    <property>
        <name>mapreduce.map.java.opts</name>
        <value>-Xmx8000m -XX:OnOutOfMemoryError='kill -9 %p'</value>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值