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

Reply via email to