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>