Quellcode durchsuchen

HADOOP-1455. Permit specification of arbitrary job options on pipes command line.

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@549260 13f79535-47bb-0310-9956-ffa450edef68
Doug Cutting vor 18 Jahren
Ursprung
Commit
2d56d6c2ae
2 geänderte Dateien mit 20 neuen und 0 gelöschten Zeilen
  1. 3 0
      CHANGES.txt
  2. 17 0
      src/java/org/apache/hadoop/mapred/pipes/Submitter.java

+ 3 - 0
CHANGES.txt

@@ -220,6 +220,9 @@ Trunk (unreleased changes)
  66. HADOOP-1489.  Fix text input truncation bug due to mark/reset.
      Add a unittest. (Bwolen Yang via cutting)
 
+ 67. HADOOP-1455.  Permit specification of arbitrary job options on
+     pipes command line.  (Devaraj Das via cutting)
+
 
 Release 0.13.0 - 2007-06-08
 

+ 17 - 0
src/java/org/apache/hadoop/mapred/pipes/Submitter.java

@@ -23,6 +23,7 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.util.StringTokenizer;
 
 import org.apache.commons.cli2.CommandLine;
 import org.apache.commons.cli2.OptionException;
@@ -283,6 +284,10 @@ public class Submitter {
       // to make it print something reasonable.
       System.out.println("bin/hadoop pipes");
       System.out.println("  [-conf <path>]  // Configuration for job");
+      System.out.println("  [-jobconf <key=value>, <key=value>, ...]" +
+                         "  // add/override configuration for job." +
+                         " (Multiple comma delimited key=value pairs" +
+                         " can be passed)");
       System.out.println("  [-input <path>] // Input directory");
       System.out.println("  [-output <path>] // Output directory");
       System.out.println("  [-jar <jar file> // jar filename");
@@ -328,6 +333,9 @@ public class Submitter {
     cli.addOption("writer", false, "java classname of OutputFormat", "class");
     cli.addOption("program", false, "URI to application executable", "class");
     cli.addOption("reduces", false, "number of reduces", "num");
+    cli.addOption("jobconf", false, 
+        "\"n1=v1,n2=v2,..\" Optional. Add or override a JobConf property.",
+        "key=val");
     Parser parser = cli.createParser();
     try {
       CommandLine results = parser.parse(args);
@@ -376,6 +384,15 @@ public class Submitter {
       if (results.hasOption("-program")) {
         setExecutable(conf, (String) results.getValue("-program"));
       }
+      if (results.hasOption("-jobconf")) {
+        String options = (String)results.getValue("-jobconf");
+        StringTokenizer tokenizer = new StringTokenizer(options, ",");
+        while (tokenizer.hasMoreTokens()) {
+          String keyVal = tokenizer.nextToken().trim();
+          String[] keyValSplit = keyVal.split("=");
+          conf.set(keyValSplit[0], keyValSplit[1]);
+        }
+      }
       // if they gave us a jar file, include it into the class path
       String jarFile = conf.getJar();
       if (jarFile != null) {