You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ka...@apache.org on 2017/02/14 09:55:59 UTC

kylin git commit: KYLIN-2433 Handle the column that all records is null in MergeCuboidMapper

Repository: kylin
Updated Branches:
  refs/heads/master 69f898482 -> a5326fcb5


KYLIN-2433 Handle the column that all records is null in MergeCuboidMapper


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

Branch: refs/heads/master
Commit: a5326fcb5a670970ee20b08486a77ec02dcf5c66
Parents: 69f8984
Author: kangkaisen <ka...@163.com>
Authored: Tue Feb 14 11:29:23 2017 +0800
Committer: kangkaisen <ka...@163.com>
Committed: Tue Feb 14 17:50:26 2017 +0800

----------------------------------------------------------------------
 .../kylin/engine/mr/steps/MergeCuboidMapper.java    | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/a5326fcb/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/MergeCuboidMapper.java
----------------------------------------------------------------------
diff --git a/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/MergeCuboidMapper.java b/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/MergeCuboidMapper.java
index acf1403..fccd48a 100644
--- a/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/MergeCuboidMapper.java
+++ b/engine-mr/src/main/java/org/apache/kylin/engine/mr/steps/MergeCuboidMapper.java
@@ -191,9 +191,18 @@ public class MergeCuboidMapper extends KylinMapper<Text, Text, Text, Text> {
             if (this.checkNeedMerging(col)) {
                 // if dictionary on fact table column, needs rewrite
                 DictionaryManager dictMgr = DictionaryManager.getInstance(config);
-                Dictionary<String> sourceDict = dictMgr.getDictionary(sourceCubeSegment.getDictResPath(col));
                 Dictionary<String> mergedDict = dictMgr.getDictionary(mergedCubeSegment.getDictResPath(col));
 
+                Dictionary<String> sourceDict;
+                // handle the column that all records is null
+                if (sourceCubeSegment.getDictionary(col) == null) {
+                    BytesUtil.writeUnsigned(mergedDict.nullId(), newKeyBodyBuf, bufOffset, mergedDict.getSizeOfId());
+                    bufOffset += mergedDict.getSizeOfId();
+                    continue;
+                } else {
+                    sourceDict = dictMgr.getDictionary(sourceCubeSegment.getDictResPath(col));
+                }
+
                 while (sourceDict.getSizeOfValue() > newKeyBodyBuf.length - bufOffset || //
                         mergedDict.getSizeOfValue() > newKeyBodyBuf.length - bufOffset || //
                         mergedDict.getSizeOfId() > newKeyBodyBuf.length - bufOffset) {
@@ -254,11 +263,6 @@ public class MergeCuboidMapper extends KylinMapper<Text, Text, Text, Text> {
     }
 
     private Boolean checkNeedMerging(TblColRef col) throws IOException {
-        //handle the column that all records is null
-        if (sourceCubeSegment.getDictionary(col) == null) {
-            return false;
-        }
-
         Boolean ret = dimensionsNeedDict.get(col);
         if (ret != null)
             return ret;