KYLIN-1312 Enhance DeployCoprocessorCLI to support Cube names filter

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

Branch: refs/heads/KYLIN-1122
Commit: 5bd896e4858ae18d836f5cc7e4091309e48c09b4
Parents: f659c38
Author: lidongsjtu <don...@ebay.com>
Authored: Wed Jan 13 13:30:42 2016 +0800
Committer: Xiaoyu Wang <wangxia...@apache.org>
Committed: Mon Jan 18 13:38:30 2016 +0800

----------------------------------------------------------------------
 .../hbase/util/DeployCoprocessorCLI.java        | 60 ++++++++++++++------
 1 file changed, 43 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/5bd896e4/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/DeployCoprocessorCLI.java
----------------------------------------------------------------------
diff --git 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/DeployCoprocessorCLI.java
 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/DeployCoprocessorCLI.java
index 1cdb9e9..101abc2 100644
--- 
a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/DeployCoprocessorCLI.java
+++ 
b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/DeployCoprocessorCLI.java
@@ -79,13 +79,20 @@ public class DeployCoprocessorCLI {
 
         List<String> tableNames = getHTableNames(kylinConfig);
         logger.info("Identify tables " + tableNames);
-        
-        if (args.length == 1) {
-            logger.info("Probe run, existing. Append argument 'all' or 
specific tables to execute.");
-            System.exit(0);
+
+        if (args.length <= 1) {
+            printUsageAndExit();
         }
-        
-        tableNames = filterTables(tableNames, Arrays.asList(args).subList(1, 
args.length));
+
+        String filterType = args[1].toLowerCase();
+        if (filterType.equals("-table")) {
+            tableNames = filterByTables(tableNames, 
Arrays.asList(args).subList(2, args.length));
+        } else if (filterType.equals("-cube")) {
+            tableNames = filterByCubes(tableNames, 
Arrays.asList(args).subList(2, args.length));
+        } else if (!filterType.equals("all")) {
+            printUsageAndExit();
+        }
+
         logger.info("Will execute tables " + tableNames);
         
         Set<String> oldJarPaths = getCoprocessorJarPaths(hbaseAdmin, 
tableNames);
@@ -105,19 +112,38 @@ public class DeployCoprocessorCLI {
         logger.info("Active coprocessor jar: " + hdfsCoprocessorJar);
     }
 
-    private static List<String> filterTables(List<String> tableNames, 
List<String> list) {
+    private static void printUsageAndExit() {
+        logger.info("Probe run, exiting. Append argument 'all' or specific 
tables/cubes to execute.");
+        System.exit(0);
+    }
+
+    private static List<String> filterByCubes(List<String> allTableNames, 
List<String> cubeNames) {
+        CubeManager cubeManager = 
CubeManager.getInstance(KylinConfig.getInstanceFromEnv());
+        List<String> result = Lists.newArrayList();
+        for (String c : cubeNames) {
+            c = c.trim();
+            if (c.endsWith(","))
+                c = c.substring(0, c.length() - 1);
+
+            CubeInstance cubeInstance = cubeManager.getCube(c);
+            for (CubeSegment segment : cubeInstance.getSegments()) {
+                String tableName = segment.getStorageLocationIdentifier();
+                if (allTableNames.contains(tableName)) {
+                    result.add(tableName);
+                }
+            }
+        }
+        return result;
+    }
+
+    private static List<String> filterByTables(List<String> allTableNames, 
List<String> tableNames) {
         List<String> result = Lists.newArrayList();
-        for (String t : list) {
+        for (String t : tableNames) {
             t = t.trim();
             if (t.endsWith(","))
                 t = t.substring(0, t.length() - 1);
             
-            if (t.equals("all")) {
-                result.addAll(tableNames);
-                break;
-            }
-            
-            if (tableNames.contains(t)) {
+            if (allTableNames.contains(t)) {
                 result.add(t);
             }
         }
@@ -312,9 +338,9 @@ public class DeployCoprocessorCLI {
                 }
 
                 String jarPath = valueMatcher.group(1).trim();
-                if (StringUtils.isNotEmpty(jarPath)) {
-                    result.add(jarPath);
-                }
+                if (StringUtils.isNotEmpty(jarPath)) {
+                    result.add(jarPath);
+                }
             }
         }
 

Reply via email to