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); + } } }