This is an automated email from the ASF dual-hosted git repository. pboado pushed a commit to branch 5.x-cdh6 in repository https://gitbox.apache.org/repos/asf/phoenix.git
commit 045e0bdcbea71907d62871c8bd496e9e23a1fec0 Author: Xinyi Yan <x...@salesforce.com> AuthorDate: Sat Apr 20 01:25:02 2019 +0100 PHOENIX-5252 Add job priority option to UpdateStatisticsTool --- .../phoenix/schema/stats/UpdateStatisticsTool.java | 32 +++++++++++++++++++++- .../schema/stats/UpdateStatisticsToolTest.java | 15 ++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/UpdateStatisticsTool.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/UpdateStatisticsTool.java index 88b0f0a..110682d 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/UpdateStatisticsTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/UpdateStatisticsTool.java @@ -35,6 +35,7 @@ import org.apache.hadoop.hbase.metrics.Gauge; import org.apache.hadoop.hbase.metrics.impl.MetricRegistriesImpl; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.mapreduce.Job; +import org.apache.hadoop.mapreduce.JobPriority; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.lib.db.DBInputFormat.NullDBWritable; import org.apache.hadoop.mapreduce.lib.output.NullOutputFormat; @@ -78,6 +79,8 @@ public class UpdateStatisticsTool extends Configured implements Tool { "HBase Snapshot Name"); private static final Option RESTORE_DIR_OPTION = new Option("d", "restore-dir", true, "Restore Directory for HBase snapshot"); + private static final Option JOB_PRIORITY_OPTION = new Option("p", "job-priority", true, + "Define job priority from 0(highest) to 4"); private static final Option RUN_FOREGROUND_OPTION = new Option("runfg", "run-foreground", false, "If specified, runs UpdateStatisticsTool in Foreground. Default - Runs the build in background"); @@ -90,6 +93,7 @@ public class UpdateStatisticsTool extends Configured implements Tool { private String tableName; private String snapshotName; private Path restoreDir; + private JobPriority jobPriority; private boolean manageSnapshot; private boolean isForeground; @@ -164,12 +168,35 @@ public class UpdateStatisticsTool extends Configured implements Tool { if (restoreDirOptionValue == null) { restoreDirOptionValue = getConf().get(FS_DEFAULT_NAME_KEY) + "/tmp"; } - + + jobPriority = getJobPriority(cmdLine); + restoreDir = new Path(restoreDirOptionValue); manageSnapshot = cmdLine.hasOption(MANAGE_SNAPSHOT_OPTION.getOpt()); isForeground = cmdLine.hasOption(RUN_FOREGROUND_OPTION.getOpt()); } + public String getJobPriority() { + return this.jobPriority.toString(); + } + + private JobPriority getJobPriority(CommandLine cmdLine) { + String jobPriorityOption = cmdLine.getOptionValue(JOB_PRIORITY_OPTION.getOpt()); + if (jobPriorityOption == null) { + return JobPriority.NORMAL; + } + + switch (jobPriorityOption) { + case "0" : return JobPriority.VERY_HIGH; + case "1" : return JobPriority.HIGH; + case "2" : return JobPriority.NORMAL; + case "3" : return JobPriority.LOW; + case "4" : return JobPriority.VERY_LOW; + default: + return JobPriority.NORMAL; + } + } + private void configureJob() throws Exception { job = Job.getInstance(getConf(), "UpdateStatistics-" + tableName + "-" + snapshotName); @@ -187,6 +214,8 @@ public class UpdateStatisticsTool extends Configured implements Tool { job.setMapOutputValueClass(NullWritable.class); job.setOutputFormatClass(NullOutputFormat.class); job.setNumReduceTasks(0); + job.setPriority(this.jobPriority); + TableMapReduceUtil.addDependencyJars(job); TableMapReduceUtil.addDependencyJarsForClasses(job.getConfiguration(), PhoenixConnection.class, Chronology.class, CharStream.class, TransactionSystemClient.class, TransactionNotInProgressException.class, @@ -265,6 +294,7 @@ public class UpdateStatisticsTool extends Configured implements Tool { options.addOption(SNAPSHOT_NAME_OPTION); options.addOption(HELP_OPTION); options.addOption(RESTORE_DIR_OPTION); + options.addOption(JOB_PRIORITY_OPTION); options.addOption(RUN_FOREGROUND_OPTION); options.addOption(MANAGE_SNAPSHOT_OPTION); return options; diff --git a/phoenix-core/src/test/java/org/apache/phoenix/schema/stats/UpdateStatisticsToolTest.java b/phoenix-core/src/test/java/org/apache/phoenix/schema/stats/UpdateStatisticsToolTest.java index 2262b0e..5c0a488 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/schema/stats/UpdateStatisticsToolTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/schema/stats/UpdateStatisticsToolTest.java @@ -90,4 +90,19 @@ public class UpdateStatisticsToolTest { assertEquals("hdfs://base-dir/tmp", tool.getRestoreDir().toString()); } + @Test + public void testJobPriorityInput() { + UpdateStatisticsTool tool = new UpdateStatisticsTool(); + tool.parseArgs(new String[] {"-t", "table1"}); + assertEquals("NORMAL", tool.getJobPriority()); + + tool.parseArgs(new String[] {"-t", "table1", "-p", "0"}); + assertEquals("VERY_HIGH", tool.getJobPriority()); + + tool.parseArgs(new String[] {"-t", "table1", "-p", "-1"}); + assertEquals("NORMAL", tool.getJobPriority()); + + tool.parseArgs(new String[] {"-t", "table1", "-p", "DSAFDAS"}); + assertEquals("NORMAL", tool.getJobPriority()); + } } \ No newline at end of file