cube计算:
当有层次维度时,公式如下:
(hierarchy.size() + 1) * hierarchyDimsList.size() * (1 << jointDimsList.size()) * (1 <<
normalDims.size())
当没有层次维度时,公式如下:
1 << jointDimsList.size()) * (1 << normalDims.size()
hierarchyDimsList.size(): 层次维度的个数。
hierarchy.size(): 每个层次维度包含的维度个数。
jointDimsList.size(): 联合维度的个数。
normalDims.size(): 正常维度的个数,即不是强制维度,层次维度,联合维度的维度数目。
根据cube在build的顺序,进行优化
#1 Step Name: Create Intermediate Flat Hive Table
第一步是根据我们自定义的cube模型来生成原始数据,直接使用hive -e执行sql语句,中间设置了大量的hive
的配置项,数据格式默认为SEQUENCEFILE。
#2 Step Name: Redistribute Flat Hive Table
第二步是在第一步的基础之上,计算原始数据的行数,根据rows,估算map、reduce的数量,这一步主要是根据
我们的cube模型做了一次的DISTRIBUTE BY ,同样也有默认的hive的配置项。
作用:防止不均匀
默认是100W一个文件,你可以通过conf/kylin.properties
kylin.job.mapreduce.mapper.input.rows=500000这个进行配置
在构建cube