[2/3] kylin git commit: KYLIN-2217 add saveDictionary() on CubeManager & DictionaryManager
KYLIN-2217 add saveDictionary() on CubeManager & DictionaryManager Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/ff2d79c4 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ff2d79c4 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ff2d79c4 Branch: refs/heads/master Commit: ff2d79c4e032ef243e584730738e5ba2d12ed5c0 Parents: 25f0819 Author: Li YangAuthored: Thu Nov 24 17:24:57 2016 +0800 Committer: Yang Li Committed: Sat Nov 26 13:02:17 2016 +0800 -- .../java/org/apache/kylin/cube/CubeManager.java | 29 ++--- .../kylin/cube/cli/DictionaryGeneratorCLI.java | 34 +- .../org/apache/kylin/cube/util/CubingUtils.java | 2 +- .../org/apache/kylin/dict/DictionaryInfo.java | 5 ++ .../apache/kylin/dict/DictionaryManager.java| 65 +--- .../engine/mr/steps/MergeCuboidMapperTest.java | 2 +- .../kylin/cube/ITDictionaryManagerTest.java | 6 +- 7 files changed, 93 insertions(+), 50 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/ff2d79c4/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java -- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java index 307bb46..ea8ff81 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java @@ -48,7 +48,6 @@ import org.apache.kylin.cube.model.DictionaryDesc; import org.apache.kylin.cube.model.DimensionDesc; import org.apache.kylin.dict.DictionaryInfo; import org.apache.kylin.dict.DictionaryManager; -import org.apache.kylin.dict.DistinctColumnValuesProvider; import org.apache.kylin.dict.lookup.LookupStringTable; import org.apache.kylin.dict.lookup.SnapshotManager; import org.apache.kylin.dict.lookup.SnapshotTable; @@ -214,25 +213,39 @@ public class CubeManager implements IRealizationProvider { return result; } -public DictionaryInfo buildDictionary(CubeSegment cubeSeg, TblColRef col, DistinctColumnValuesProvider factTableValueProvider) throws IOException { +public DictionaryInfo buildDictionary(CubeSegment cubeSeg, TblColRef col, ReadableTable inpTable) throws IOException { CubeDesc cubeDesc = cubeSeg.getCubeDesc(); if (!cubeDesc.getAllColumnsNeedDictionaryBuilt().contains(col)) return null; -DictionaryManager dictMgr = getDictionaryManager(); String builderClass = cubeDesc.getDictionaryBuilderClass(col); -DictionaryInfo dictInfo = dictMgr.buildDictionary(cubeDesc.getModel(), col, factTableValueProvider, builderClass); +DictionaryInfo dictInfo = getDictionaryManager().buildDictionary(cubeDesc.getModel(), col, inpTable, builderClass); +saveDictionaryInfo(cubeSeg, col, dictInfo); +return dictInfo; +} + +public DictionaryInfo saveDictionary(CubeSegment cubeSeg, TblColRef col, ReadableTable inpTable, Dictionary dict) throws IOException { +CubeDesc cubeDesc = cubeSeg.getCubeDesc(); +if (!cubeDesc.getAllColumnsNeedDictionaryBuilt().contains(col)) +return null; + +DictionaryInfo dictInfo = getDictionaryManager().saveDictionary(cubeDesc.getModel(), col, inpTable, dict); + +saveDictionaryInfo(cubeSeg, col, dictInfo); +return dictInfo; +} + +private void saveDictionaryInfo(CubeSegment cubeSeg, TblColRef col, DictionaryInfo dictInfo) throws IOException { if (dictInfo != null) { Dictionary dict = dictInfo.getDictionaryObject(); cubeSeg.putDictResPath(col, dictInfo.getResourcePath()); cubeSeg.getRowkeyStats().add(new Object[] { col.getName(), dict.getSize(), dict.getSizeOfId() }); -CubeUpdate cubeBuilder = new CubeUpdate(cubeSeg.getCubeInstance()); -cubeBuilder.setToUpdateSegs(cubeSeg); -updateCube(cubeBuilder); +CubeUpdate update = new CubeUpdate(cubeSeg.getCubeInstance()); +update.setToUpdateSegs(cubeSeg); +updateCube(update); } -return dictInfo; } /** http://git-wip-us.apache.org/repos/asf/kylin/blob/ff2d79c4/core-cube/src/main/java/org/apache/kylin/cube/cli/DictionaryGeneratorCLI.java -- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/cli/DictionaryGeneratorCLI.java b/core-cube/src/main/java/org/apache/kylin/cube/cli/DictionaryGeneratorCLI.java index 89e2e9b..a6aeb96 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/cli/DictionaryGeneratorCLI.java +++
[2/3] kylin git commit: KYLIN-2217 add saveDictionary() on CubeManager & DictionaryManager
KYLIN-2217 add saveDictionary() on CubeManager & DictionaryManager Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/917a8854 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/917a8854 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/917a8854 Branch: refs/heads/KYLIN-2217-2 Commit: 917a88543400d30d0ed3467167243104fc8fb70f Parents: 7fe7fc3 Author: Li YangAuthored: Thu Nov 24 17:24:57 2016 +0800 Committer: Li Yang Committed: Fri Nov 25 09:48:33 2016 +0800 -- .../java/org/apache/kylin/cube/CubeManager.java | 29 ++--- .../kylin/cube/cli/DictionaryGeneratorCLI.java | 34 +- .../org/apache/kylin/cube/util/CubingUtils.java | 2 +- .../org/apache/kylin/dict/DictionaryInfo.java | 5 ++ .../apache/kylin/dict/DictionaryManager.java| 65 +--- .../engine/mr/steps/MergeCuboidMapperTest.java | 2 +- .../kylin/cube/ITDictionaryManagerTest.java | 6 +- 7 files changed, 93 insertions(+), 50 deletions(-) -- http://git-wip-us.apache.org/repos/asf/kylin/blob/917a8854/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java -- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java index 307bb46..ea8ff81 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java @@ -48,7 +48,6 @@ import org.apache.kylin.cube.model.DictionaryDesc; import org.apache.kylin.cube.model.DimensionDesc; import org.apache.kylin.dict.DictionaryInfo; import org.apache.kylin.dict.DictionaryManager; -import org.apache.kylin.dict.DistinctColumnValuesProvider; import org.apache.kylin.dict.lookup.LookupStringTable; import org.apache.kylin.dict.lookup.SnapshotManager; import org.apache.kylin.dict.lookup.SnapshotTable; @@ -214,25 +213,39 @@ public class CubeManager implements IRealizationProvider { return result; } -public DictionaryInfo buildDictionary(CubeSegment cubeSeg, TblColRef col, DistinctColumnValuesProvider factTableValueProvider) throws IOException { +public DictionaryInfo buildDictionary(CubeSegment cubeSeg, TblColRef col, ReadableTable inpTable) throws IOException { CubeDesc cubeDesc = cubeSeg.getCubeDesc(); if (!cubeDesc.getAllColumnsNeedDictionaryBuilt().contains(col)) return null; -DictionaryManager dictMgr = getDictionaryManager(); String builderClass = cubeDesc.getDictionaryBuilderClass(col); -DictionaryInfo dictInfo = dictMgr.buildDictionary(cubeDesc.getModel(), col, factTableValueProvider, builderClass); +DictionaryInfo dictInfo = getDictionaryManager().buildDictionary(cubeDesc.getModel(), col, inpTable, builderClass); +saveDictionaryInfo(cubeSeg, col, dictInfo); +return dictInfo; +} + +public DictionaryInfo saveDictionary(CubeSegment cubeSeg, TblColRef col, ReadableTable inpTable, Dictionary dict) throws IOException { +CubeDesc cubeDesc = cubeSeg.getCubeDesc(); +if (!cubeDesc.getAllColumnsNeedDictionaryBuilt().contains(col)) +return null; + +DictionaryInfo dictInfo = getDictionaryManager().saveDictionary(cubeDesc.getModel(), col, inpTable, dict); + +saveDictionaryInfo(cubeSeg, col, dictInfo); +return dictInfo; +} + +private void saveDictionaryInfo(CubeSegment cubeSeg, TblColRef col, DictionaryInfo dictInfo) throws IOException { if (dictInfo != null) { Dictionary dict = dictInfo.getDictionaryObject(); cubeSeg.putDictResPath(col, dictInfo.getResourcePath()); cubeSeg.getRowkeyStats().add(new Object[] { col.getName(), dict.getSize(), dict.getSizeOfId() }); -CubeUpdate cubeBuilder = new CubeUpdate(cubeSeg.getCubeInstance()); -cubeBuilder.setToUpdateSegs(cubeSeg); -updateCube(cubeBuilder); +CubeUpdate update = new CubeUpdate(cubeSeg.getCubeInstance()); +update.setToUpdateSegs(cubeSeg); +updateCube(update); } -return dictInfo; } /** http://git-wip-us.apache.org/repos/asf/kylin/blob/917a8854/core-cube/src/main/java/org/apache/kylin/cube/cli/DictionaryGeneratorCLI.java -- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/cli/DictionaryGeneratorCLI.java b/core-cube/src/main/java/org/apache/kylin/cube/cli/DictionaryGeneratorCLI.java index 89e2e9b..a6aeb96 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/cli/DictionaryGeneratorCLI.java +++