Index: examples/test_case_data/localmeta/kylin.properties IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- examples/test_case_data/localmeta/kylin.properties (revision bc9ff38c77b3a71229a6859ce2f6070f210a97b5) +++ examples/test_case_data/localmeta/kylin.properties (revision ) @@ -35,6 +35,9 @@ # The storage for final cube file in hbase kylin.storage.url=hbase +# The namespace for hbase. If don't set, hbase will use "default" namespace. +kylin.cube.namespace=KYLIN + # Working folder in HDFS, make sure user has the right access to the hdfs directory kylin.env.hdfs-working-dir=/kylin Index: core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java (revision bc9ff38c77b3a71229a6859ce2f6070f210a97b5) +++ core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java (revision ) @@ -329,6 +329,15 @@ return Boolean.parseBoolean(getOptional("kylin.cube.allow-appear-in-multiple-projects", "false")); } + public String getCubeNamespace() { + String namespace = getOptional("kylin.cube.namespace"); + if(namespace != null) { + return namespace + ":"; + } else { + return ""; + } + } + // ============================================================================ // JOB // ============================================================================ Index: build/conf/kylin.properties IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- build/conf/kylin.properties (revision bc9ff38c77b3a71229a6859ce2f6070f210a97b5) +++ build/conf/kylin.properties (revision ) @@ -63,6 +63,9 @@ # The storage for cube is hbase kylin.storage.url=hbase +# The namespace for hbase. If don't set, hbase will use "default" namespace. +kylin.cube.namespace= + # Compression codec for htable, valid value [none, snappy, lzo, gzip, lz4] kylin.storage.hbase.compression-codec=none Index: core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java (revision bc9ff38c77b3a71229a6859ce2f6070f210a97b5) +++ core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java (revision ) @@ -48,7 +48,7 @@ @Before public void setUp() throws Exception { - this.createTestMetadata(); + staticCreateTestMetadata(); } @After @@ -304,6 +304,13 @@ assertTrue(mergedSeg.getFirst() == 0 && mergedSeg.getSecond() == 8000); } + @Test + public void testGetCubeNameWithNamespace() { + CubeManager mgr = CubeManager.getInstance(getTestConfig()); + String tablename = mgr.generateStorageLocation(); + assertTrue(tablename.startsWith("KYLIN:")); + } + public CubeDescManager getCubeDescManager() { return CubeDescManager.getInstance(getTestConfig()); } Index: core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java (revision bc9ff38c77b3a71229a6859ce2f6070f210a97b5) +++ core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java (revision ) @@ -76,6 +76,7 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; +import com.google.common.annotations.VisibleForTesting; /** * @author yangli9 @@ -665,8 +666,10 @@ return segment; } - private String generateStorageLocation() { - String namePrefix = IRealizationConstants.CubeHbaseStorageLocationPrefix; + @VisibleForTesting + /*private*/ String generateStorageLocation() { + KylinConfig config = KylinConfig.getInstanceFromEnv(); + String namePrefix = config.getCubeNamespace() + IRealizationConstants.CubeHbaseStorageLocationPrefix; String tableName = ""; Random ran = new Random(); do {