KYLIN_2752 Make cube hbase tablename prefix configurable

Signed-off-by: Li Yang <liy...@apache.org>


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

Branch: refs/heads/security_update
Commit: c9a855f271d592262b6e9ede0262ae160fcc42cd
Parents: 87ccbc3
Author: Albert Lee <albertlee...@gmail.com>
Authored: Sun Sep 10 23:23:13 2017 +0800
Committer: Li Yang <liy...@apache.org>
Committed: Sun Sep 17 16:21:33 2017 +0800

----------------------------------------------------------------------
 .../main/java/org/apache/kylin/common/KylinConfigBase.java   | 4 ++++
 core-common/src/main/resources/kylin-defaults.properties     | 3 +++
 .../src/main/java/org/apache/kylin/cube/CubeManager.java     | 8 ++++----
 .../src/test/java/org/apache/kylin/cube/CubeManagerTest.java | 8 ++++++++
 examples/test_case_data/localmeta/kylin.properties           | 6 ++++++
 5 files changed, 25 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/c9a855f2/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 c74c093..71dbfbe 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
@@ -720,6 +720,10 @@ abstract public class KylinConfigBase implements 
Serializable {
         return StorageURL.valueOf(url);
     }
 
+    public String getHBaseTableNamePrefix() {
+        return getOptional("kylin.storage.hbase.table-name-prefix", "KYLIN_");
+    }
+
     public String getHBaseClusterFs() {
         return getOptional("kylin.storage.hbase.cluster-fs", "");
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/c9a855f2/core-common/src/main/resources/kylin-defaults.properties
----------------------------------------------------------------------
diff --git a/core-common/src/main/resources/kylin-defaults.properties 
b/core-common/src/main/resources/kylin-defaults.properties
index c422b42..141fb7b 100644
--- a/core-common/src/main/resources/kylin-defaults.properties
+++ b/core-common/src/main/resources/kylin-defaults.properties
@@ -74,6 +74,9 @@ kylin.source.hive.redistribute-flat-table=true
 # The storage for final cube file in hbase
 kylin.storage.url=hbase
 
+# The prefix of hbase table
+kylin.storage.hbase.table-name-prefix=KYLIN_
+
 # Compression codec for htable, valid value [none, snappy, lzo, gzip, lz4]
 kylin.storage.hbase.compression-codec=none
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/c9a855f2/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 5fd3d1b..425e32f 100755
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
@@ -65,7 +65,6 @@ import org.apache.kylin.metadata.model.TblColRef;
 import org.apache.kylin.metadata.project.ProjectInstance;
 import org.apache.kylin.metadata.project.ProjectManager;
 import org.apache.kylin.metadata.realization.IRealization;
-import org.apache.kylin.metadata.realization.IRealizationConstants;
 import org.apache.kylin.metadata.realization.IRealizationProvider;
 import org.apache.kylin.metadata.realization.RealizationStatusEnum;
 import org.apache.kylin.metadata.realization.RealizationType;
@@ -75,6 +74,7 @@ import org.apache.kylin.source.SourcePartition;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -683,8 +683,9 @@ public class CubeManager implements IRealizationProvider {
         return segment;
     }
 
-    private String generateStorageLocation() {
-        String namePrefix = 
IRealizationConstants.CubeHbaseStorageLocationPrefix;
+    @VisibleForTesting
+    /*private*/ String generateStorageLocation() {
+        String namePrefix = config.getHBaseTableNamePrefix();
         String tableName = "";
         Random ran = new Random();
         do {
@@ -695,7 +696,6 @@ public class CubeManager implements IRealizationProvider {
             }
             tableName = sb.toString();
         } while (this.usedStorageLocation.containsValue(tableName));
-
         return tableName;
     }
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/c9a855f2/core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java
----------------------------------------------------------------------
diff --git a/core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java 
b/core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java
index 7dd7212..da27032 100644
--- a/core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java
+++ b/core-cube/src/test/java/org/apache/kylin/cube/CubeManagerTest.java
@@ -305,6 +305,14 @@ public class CubeManagerTest extends 
LocalFileMetadataTestCase {
         assertTrue((Long) mergedSeg.start.v == 0 && (Long) mergedSeg.end.v == 
8000);
     }
 
+    @Test
+    public void testGetCubeNameWithNamespace() {
+        CubeManager mgr = CubeManager.getInstance(getTestConfig());
+        String tablename = mgr.generateStorageLocation();
+        System.out.println(tablename);
+        assertTrue(tablename.startsWith("HELLO:WORLD"));
+    }
+
     public CubeDescManager getCubeDescManager() {
         return CubeDescManager.getInstance(getTestConfig());
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/c9a855f2/examples/test_case_data/localmeta/kylin.properties
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/kylin.properties 
b/examples/test_case_data/localmeta/kylin.properties
index c7dda3f..48e2856 100644
--- a/examples/test_case_data/localmeta/kylin.properties
+++ b/examples/test_case_data/localmeta/kylin.properties
@@ -39,6 +39,12 @@ kylin.metadata.url=
 # The storage for final cube file in hbase
 kylin.storage.url=hbase
 
+# The prefix for cube table
+kylin.storage.hbase.tableprefix=WORLD_
+
+# The namespace for hbase storage
+kylin.storage.hbase.namespace=HELLO
+
 # Working folder in HDFS, make sure user has the right access to the hdfs 
directory
 kylin.env.hdfs-working-dir=/kylin
 

Reply via email to