Repository: kylin
Updated Branches:
  refs/heads/master 3bca0bfe4 -> 6845a358c


KYLIN-1694 make multiply coefficient configurable when estimating cuboid size

Signed-off-by: lidongsjtu <lid...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/6845a358
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/6845a358
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/6845a358

Branch: refs/heads/master
Commit: 6845a358c2b7d56ee453bcb8d769d0fcb9b609ea
Parents: 3bca0bf
Author: kangkaisen <kangkai...@live.com>
Authored: Mon May 16 14:49:26 2016 +0800
Committer: lidongsjtu <lid...@apache.org>
Committed: Fri May 27 13:54:50 2016 +0800

----------------------------------------------------------------------
 .../java/org/apache/kylin/common/KylinConfigBase.java    |  8 ++++++++
 .../apache/kylin/engine/mr/common/CubeStatsReader.java   | 11 +++++++----
 2 files changed, 15 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/6845a358/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 b2294b0..497f29d 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
@@ -409,6 +409,14 @@ abstract public class KylinConfigBase implements 
Serializable {
         return Long.parseLong(getOptional("kylin.job.step.timeout", 
String.valueOf(2 * 60 * 60)));
     }
 
+    public double getJobCuboidSizeRatio(){
+        return Double.parseDouble(getOptional("kylin.job.cuboid.size.ratio", 
"0.25"));
+    }
+
+    public double getJobCuboidSizeMemHungryRatio(){
+        return 
Double.parseDouble(getOptional("kylin.job.cuboid.size.memhungry.ratio", 
"0.05"));
+    }
+
     public String getCubeAlgorithm() {
         return getOptional("kylin.cube.algorithm", "auto");
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/6845a358/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/CubeStatsReader.java
----------------------------------------------------------------------
diff --git 
a/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/CubeStatsReader.java
 
b/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/CubeStatsReader.java
index 940172b..8973a99 100644
--- 
a/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/CubeStatsReader.java
+++ 
b/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/CubeStatsReader.java
@@ -180,6 +180,7 @@ public class CubeStatsReader {
     private static double estimateCuboidStorageSize(CubeSegment cubeSegment, 
long cuboidId, long rowCount, long baseCuboidId, List<Integer> 
rowKeyColumnLength) {
 
         int bytesLength = cubeSegment.getRowKeyPreambleSize();
+        KylinConfig kylinConf = cubeSegment.getConfig();
 
         long mask = Long.highestOneBit(baseCuboidId);
         long parentCuboidIdActualLength = Long.SIZE - 
Long.numberOfLeadingZeros(baseCuboidId);
@@ -204,11 +205,13 @@ public class CubeStatsReader {
 
         double ret = 1.0 * bytesLength * rowCount / (1024L * 1024L);
         if (isMemoryHungry) {
-            logger.info("Cube is memory hungry, storage size estimation 
multiply 0.05");
-            ret *= 0.05;
+            double cuboidSizeMemHungryRatio = 
kylinConf.getJobCuboidSizeMemHungryRatio();
+            logger.info("Cube is memory hungry, storage size estimation 
multiply " + cuboidSizeMemHungryRatio);
+            ret *= cuboidSizeMemHungryRatio;
         } else {
-            logger.info("Cube is not memory hungry, storage size estimation 
multiply 0.25");
-            ret *= 0.25;
+            double cuboidSizeRatio = kylinConf.getJobCuboidSizeRatio();
+            logger.info("Cube is not memory hungry, storage size estimation 
multiply " + cuboidSizeRatio);
+            ret *= cuboidSizeRatio;
         }
         logger.info("Cuboid " + cuboidId + " has " + rowCount + " rows, each 
row size is " + bytesLength + " bytes." + " Total size is " + ret + "M.");
         return ret;

Reply via email to