KYLIN-1556 minor changes to improve correctness, still needs further changes
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/9aeb7652 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/9aeb7652 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/9aeb7652 Branch: refs/heads/1.5.x-HBase1.1.3 Commit: 9aeb76526f71a43ebfd9394c1eafb46398906208 Parents: 5dd133f Author: Hongbin Ma <mahong...@apache.org> Authored: Fri Apr 1 14:45:02 2016 +0800 Committer: Hongbin Ma <mahong...@apache.org> Committed: Fri Apr 1 14:45:57 2016 +0800 ---------------------------------------------------------------------- .../apache/kylin/common/KylinConfigBase.java | 16 ++++++++++------ .../org/apache/kylin/cube/CubeInstance.java | 9 +++++++-- .../org/apache/kylin/query/ITIIQueryTest.java | 2 +- .../apache/kylin/query/routing/Candidate.java | 20 +++++++------------- 4 files changed, 25 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/9aeb7652/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java ---------------------------------------------------------------------- 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 3d9a338..e911dd9 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 @@ -66,11 +66,11 @@ abstract public class KylinConfigBase implements Serializable { // ============================================================================ private volatile Properties properties = new Properties(); - + public KylinConfigBase() { this(new Properties()); } - + public KylinConfigBase(Properties props) { this.properties = props; } @@ -433,7 +433,7 @@ abstract public class KylinConfigBase implements Serializable { public int getScanThreshold() { return Integer.parseInt(getOptional("kylin.query.scan.threshold", "10000000")); } - + public int getCubeVisitTimeoutTimes() { return Integer.parseInt(getOptional("kylin.query.cube.visit.timeout.times", "1")); } @@ -447,7 +447,11 @@ abstract public class KylinConfigBase implements Serializable { } public int getBadQueryDefaultAlertingSeconds() { - return Integer.parseInt(getOptional("kylin.query.badquery.default.alerting.seconds", "90")); + return Integer.parseInt(getOptional("kylin.query.badquery.alerting.seconds", "90")); + } + + public int getBadQueryDefaultDetectIntervalSeconds() { + return Integer.parseInt(getOptional("kylin.query.badquery.default.alerting.seconds", "60")); } public int getCachedDictMaxEntrySize() { @@ -500,7 +504,7 @@ abstract public class KylinConfigBase implements Serializable { //don't change this per https://issues.apache.org/jira/browse/KYLIN-1545 public int getHBaseScanMaxResultSize() { - return Integer.parseInt(this.getOptional("kylin.hbase.scan.max_result_size", "-1")); + return Integer.parseInt(this.getOptional("kylin.hbase.scan.max_result_size", "-1")); } public int getCubingInMemSamplingPercent() { @@ -532,7 +536,7 @@ abstract public class KylinConfigBase implements Serializable { public String getHbaseDefaultCompressionCodec() { return getOptional("kylin.hbase.default.compression.codec", ""); } - + public String getHbaseDefaultEncoding() { return getOptional("kylin.hbase.default.encoding", "FAST_DIFF"); } http://git-wip-us.apache.org/repos/asf/kylin/blob/9aeb7652/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java index f725308..8f1af7a 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeInstance.java @@ -343,7 +343,8 @@ public class CubeInstance extends RootPersistentEntity implements IRealization, private int getCost(SQLDigest digest) { int calculatedCost = cost; - calculatedCost += getAllDimensions().size() * COST_WEIGHT_DIMENSION + getMeasures().size() * COST_WEIGHT_MEASURE; + //the number of dimensions is not as accurate as number of row key cols + calculatedCost += getRowKeyColumnCount() * COST_WEIGHT_DIMENSION + getMeasures().size() * COST_WEIGHT_MEASURE; for (LookupDesc lookupDesc : this.getDescriptor().getModel().getLookups()) { // more tables, more cost @@ -352,7 +353,7 @@ public class CubeInstance extends RootPersistentEntity implements IRealization, calculatedCost += COST_WEIGHT_INNER_JOIN; } } - + return calculatedCost; } @@ -398,6 +399,10 @@ public class CubeInstance extends RootPersistentEntity implements IRealization, return this.getDescriptor().getModelName(); } + public int getRowKeyColumnCount() { + return getDescriptor().getRowkey().getRowKeyColumns().length; + } + @Override public List<TblColRef> getAllDimensions() { return Lists.newArrayList(getDescriptor().listDimensionColumnsIncludingDerived()); http://git-wip-us.apache.org/repos/asf/kylin/blob/9aeb7652/kylin-it/src/test/java/org/apache/kylin/query/ITIIQueryTest.java ---------------------------------------------------------------------- diff --git a/kylin-it/src/test/java/org/apache/kylin/query/ITIIQueryTest.java b/kylin-it/src/test/java/org/apache/kylin/query/ITIIQueryTest.java index 8fe4b93..67033dd 100644 --- a/kylin-it/src/test/java/org/apache/kylin/query/ITIIQueryTest.java +++ b/kylin-it/src/test/java/org/apache/kylin/query/ITIIQueryTest.java @@ -43,8 +43,8 @@ public class ITIIQueryTest extends ITKylinQueryTest { // give II higher priority than other realizations Map<RealizationType, Integer> priorities = Maps.newHashMap(); priorities.put(RealizationType.INVERTED_INDEX, 0); - priorities.put(RealizationType.CUBE, 1); priorities.put(RealizationType.HYBRID, 1); + priorities.put(RealizationType.CUBE, 2); Candidate.setPriorities(priorities); } http://git-wip-us.apache.org/repos/asf/kylin/blob/9aeb7652/query/src/main/java/org/apache/kylin/query/routing/Candidate.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/routing/Candidate.java b/query/src/main/java/org/apache/kylin/query/routing/Candidate.java index 5e4dcf6..9be8f5e 100644 --- a/query/src/main/java/org/apache/kylin/query/routing/Candidate.java +++ b/query/src/main/java/org/apache/kylin/query/routing/Candidate.java @@ -24,7 +24,6 @@ import org.apache.kylin.metadata.realization.CapabilityResult; import org.apache.kylin.metadata.realization.IRealization; import org.apache.kylin.metadata.realization.RealizationType; import org.apache.kylin.metadata.realization.SQLDigest; -import org.apache.kylin.storage.hybrid.HybridInstance; import com.google.common.collect.Maps; @@ -34,10 +33,10 @@ public class Candidate implements Comparable<Candidate> { static { PRIORITIES.put(RealizationType.HYBRID, 0); - PRIORITIES.put(RealizationType.CUBE, 0); - PRIORITIES.put(RealizationType.INVERTED_INDEX, 1); + PRIORITIES.put(RealizationType.CUBE, 1); + PRIORITIES.put(RealizationType.INVERTED_INDEX, 2); } - + /** for test only */ public static void setPriorities(Map<RealizationType, Integer> priorities) { PRIORITIES.clear(); @@ -56,11 +55,11 @@ public class Candidate implements Comparable<Candidate> { this.sqlDigest = sqlDigest; this.priority = PRIORITIES.get(realization.getType()); } - + public IRealization getRealization() { return realization; } - + public SQLDigest getSqlDigest() { return sqlDigest; } @@ -88,13 +87,8 @@ public class Candidate implements Comparable<Candidate> { if (comp != 0) { return comp; } - - if (this.realization instanceof HybridInstance) - return -1; - else if (o.realization instanceof HybridInstance) - return 1; - else - return 0; + + return 0; } }