You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ni...@apache.org on 2019/04/12 07:53:43 UTC

[kylin] branch master updated: KYLIN-3950 Make optimize job algorithm configurable

This is an automated email from the ASF dual-hosted git repository.

nic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/master by this push:
     new ed266aa  KYLIN-3950 Make optimize job algorithm configurable
ed266aa is described below

commit ed266aa98d8524a344469b1e1ead8bfd462702d8
Author: chao long <wa...@qq.com>
AuthorDate: Fri Apr 12 15:04:42 2019 +0800

    KYLIN-3950 Make optimize job algorithm configurable
---
 .../src/main/java/org/apache/kylin/common/KylinConfigBase.java       | 4 ++++
 core-common/src/main/resources/kylin-defaults.properties             | 5 +++++
 .../org/apache/kylin/engine/mr/common/StatisticsDecisionUtil.java    | 2 +-
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
index c99caeb..849f635 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
@@ -605,6 +605,10 @@ public abstract class KylinConfigBase implements Serializable {
         return Double.parseDouble(getOptional("kylin.cube.algorithm.layer-or-inmem-threshold", "7"));
     }
 
+    public boolean isAutoInmemToOptimize() {
+        return Boolean.parseBoolean(getOptional("kylin.cube.algorithm.inmem-auto-optimize", TRUE));
+    }
+
     public int getCubeAlgorithmAutoMapperLimit() {
         return Integer.parseInt(getOptional("kylin.cube.algorithm.inmem-split-limit", "500"));
     }
diff --git a/core-common/src/main/resources/kylin-defaults.properties b/core-common/src/main/resources/kylin-defaults.properties
index e0cb1f0..819c8af 100644
--- a/core-common/src/main/resources/kylin-defaults.properties
+++ b/core-common/src/main/resources/kylin-defaults.properties
@@ -207,6 +207,11 @@ kylin.cube.algorithm=layer
 # A smaller threshold prefers layer, a larger threshold prefers in-mem
 kylin.cube.algorithm.layer-or-inmem-threshold=7
 
+# auto use inmem algorithm:
+# 1, cube planner optimize job
+# 2, no source record
+kylin.cube.algorithm.inmem-auto-optimize=true
+
 kylin.cube.aggrgroup.max-combination=32768
 
 kylin.snapshot.max-mb=300
diff --git a/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/StatisticsDecisionUtil.java b/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/StatisticsDecisionUtil.java
index 09db8e9..eabb1dc 100644
--- a/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/StatisticsDecisionUtil.java
+++ b/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/StatisticsDecisionUtil.java
@@ -48,7 +48,7 @@ public class StatisticsDecisionUtil {
         KylinConfig kylinConf = seg.getConfig();
         String algPref = kylinConf.getCubeAlgorithm();
         CubingJob.AlgorithmEnum alg;
-        if (mapperOverlapRatio == 0) { // no source records
+        if (mapperOverlapRatio == 0 && kylinConf.isAutoInmemToOptimize()) { // no source records
             alg = CubingJob.AlgorithmEnum.INMEM;
         } else if (CubingJob.AlgorithmEnum.INMEM.name().equalsIgnoreCase(algPref)) {
             alg = CubingJob.AlgorithmEnum.INMEM;