KYLIN-1418 Memory hungry cube should select LAYER and INMEM cubing smartly Signed-off-by: shaofengshi <shaofeng...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/dc1671ca Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/dc1671ca Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/dc1671ca Branch: refs/heads/master Commit: dc1671ca509586d7fecb81e24fddab56d5380dae Parents: 39becdc Author: shaofengshi <shaofeng...@apache.org> Authored: Wed Apr 20 10:08:09 2016 +0800 Committer: shaofengshi <shaofeng...@apache.org> Committed: Wed Apr 20 10:11:16 2016 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/engine/mr/steps/SaveStatisticsStep.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/dc1671ca/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/SaveStatisticsStep.java ---------------------------------------------------------------------- diff --git a/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/SaveStatisticsStep.java b/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/SaveStatisticsStep.java index e1070f4..7d5e178 100644 --- a/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/SaveStatisticsStep.java +++ b/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/SaveStatisticsStep.java @@ -92,16 +92,15 @@ public class SaveStatisticsStep extends AbstractExecutable { } else if (AlgorithmEnum.LAYER.name().equalsIgnoreCase(algPref)) { alg = AlgorithmEnum.LAYER; } else { - boolean memoryHungry = false; + int memoryHungryMeasures = 0; for (MeasureDesc measure : seg.getCubeDesc().getMeasures()) { if (measure.getFunction().getMeasureType().isMemoryHungry()) { logger.info("This cube has memory-hungry measure " + measure.getFunction().getExpression()); - memoryHungry = true; - break; + memoryHungryMeasures++; } } - if (memoryHungry == true) { + if (memoryHungryMeasures > 4 || (kylinConf.isDevEnv() && memoryHungryMeasures > 0)) { alg = AlgorithmEnum.LAYER; } else if ("random".equalsIgnoreCase(algPref)) { // for testing alg = new Random().nextBoolean() ? AlgorithmEnum.INMEM : AlgorithmEnum.LAYER;