KYLIN-1327 Add from filter to UpdateHTableHostCLI
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/cf6926dc Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/cf6926dc Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/cf6926dc Branch: refs/heads/2.x-staging Commit: cf6926dcc4b35316f5e5e8212668794fb104d9bc Parents: b278986 Author: lidongsjtu <don...@ebay.com> Authored: Tue Jan 19 10:40:00 2016 +0800 Committer: lidongsjtu <lid...@apache.org> Committed: Tue Jan 19 17:16:03 2016 +0800 ---------------------------------------------------------------------- .../storage/hbase/util/UpdateHTableHostCLI.java | 32 +++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/cf6926dc/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/UpdateHTableHostCLI.java ---------------------------------------------------------------------- diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/UpdateHTableHostCLI.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/UpdateHTableHostCLI.java index 1ff98a4..f70ca10 100644 --- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/UpdateHTableHostCLI.java +++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/util/UpdateHTableHostCLI.java @@ -54,9 +54,11 @@ public class UpdateHTableHostCLI { private List<String> htables; private HBaseAdmin hbaseAdmin; private KylinConfig kylinConfig; + private String oldHostValue; - public UpdateHTableHostCLI(List<String> htables) throws IOException { + public UpdateHTableHostCLI(List<String> htables, String oldHostValue) throws IOException { this.htables = htables; + this.oldHostValue = oldHostValue; this.hbaseAdmin = new HBaseAdmin(HBaseConnection.getCurrentHBaseConfiguration()); this.kylinConfig = KylinConfig.getInstanceFromEnv(); } @@ -67,16 +69,21 @@ public class UpdateHTableHostCLI { } List<String> tableNames = getHTableNames(KylinConfig.getInstanceFromEnv()); - String filterType = args[0].toLowerCase(); + if (!args[0].toLowerCase().equals("-from")) { + printUsageAndExit(); + } + String oldHostValue = args[1].toLowerCase(); + String filterType = args[2].toLowerCase(); if (filterType.equals("-table")) { - tableNames = filterByTables(tableNames, Arrays.asList(args).subList(1, args.length)); + tableNames = filterByTables(tableNames, Arrays.asList(args).subList(3, args.length)); } else if (filterType.equals("-cube")) { - tableNames = filterByCubes(tableNames, Arrays.asList(args).subList(1, args.length)); + tableNames = filterByCubes(tableNames, Arrays.asList(args).subList(3, args.length)); } else if (!filterType.equals("-all")) { printUsageAndExit(); } + logger.info("These htables are needed to be updated: " + StringUtils.join(tableNames, ",")); - UpdateHTableHostCLI updateHTableHostCLI = new UpdateHTableHostCLI(tableNames); + UpdateHTableHostCLI updateHTableHostCLI = new UpdateHTableHostCLI(tableNames, oldHostValue); updateHTableHostCLI.execute(); logger.info("================================================================="); @@ -104,7 +111,7 @@ public class UpdateHTableHostCLI { } private static void printUsageAndExit() { - logger.info("Usage: exec -all|-cube cubeA,cubeB|-table tableA,tableB"); + logger.info("Usage: exec -from oldHostValue -all|-cube cubeA,cubeB|-table tableA,tableB"); System.exit(0); } @@ -172,17 +179,20 @@ public class UpdateHTableHostCLI { private void updateHtable(String tableName) throws IOException { HTableDescriptor desc = hbaseAdmin.getTableDescriptor(TableName.valueOf(tableName)); - hbaseAdmin.disableTable(tableName); - desc.setValue(IRealizationConstants.HTableTag, kylinConfig.getMetadataUrlPrefix()); - hbaseAdmin.modifyTable(tableName, desc); - hbaseAdmin.enableTable(tableName); + if (oldHostValue.equals(desc.getValue(kylinConfig.getMetadataUrlPrefix()))) { + desc.setValue(IRealizationConstants.HTableTag, kylinConfig.getMetadataUrlPrefix()); + hbaseAdmin.disableTable(tableName); + hbaseAdmin.modifyTable(tableName, desc); + hbaseAdmin.enableTable(tableName); + + updatedResources.add(tableName); + } } public void execute() { for (String htable : htables) { try { updateHtable(htable); - updatedResources.add(htable); } catch (IOException ex) { ex.printStackTrace(); errorMsgs.add("Update HTable[" + htable + "] failed: " + ex.getMessage());