Hadoop Pipes do not load custom InputFormats at appropriate time, rendering 
them useless in certain scenarios
-------------------------------------------------------------------------------------------------------------

                 Key: HADOOP-4020
                 URL: https://issues.apache.org/jira/browse/HADOOP-4020
             Project: Hadoop Core
          Issue Type: Improvement
          Components: pipes
    Affects Versions: 0.17.2, 0.17.1, 0.17.0, 0.16.4
            Reporter: Mateusz Berezecki


There's a patch provided below.
It was created on the 0.17.0 version,
but with a little tweaking can be applied
to the 0.18.0 as well. It fixes a timing bug,
whereas a custom inputformat was loaded
from the jar file, but the inputformat was being
processed much earlier in time, resulting
in a class not found exception.

--- src/java/org/apache/hadoop/mapred/pipes/Submitter.java.orig 2008-05-15 
09:20:16.000000000 +0200
+++ src/java/org/apache/hadoop/mapred/pipes/Submitter.java      2008-07-23 
13:01:58.000000000 +0200
@@ -364,6 +364,14 @@
       }
       if (results.hasOption("-jar")) {
         conf.setJar((String) results.getValue("-jar"));
+        // if they gave us a jar file, include it into the class path
+        String jarFile = conf.getJar();
+        if (jarFile != null) {
+          ClassLoader loader =
+            new URLClassLoader(new URL[]{ FileSystem.getLocal(conf).
+                                          pathToFile(new 
Path(jarFile)).toURL()});
+          conf.setClassLoader(loader);
+        }
       }
       if (results.hasOption("-inputformat")) {
         setIsJavaRecordReader(conf, true);
@@ -406,14 +414,6 @@
           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) {
-        ClassLoader loader =
-          new URLClassLoader(new URL[]{ FileSystem.getLocal(conf).
-                                        pathToFile(new 
Path(jarFile)).toURL()});
-        conf.setClassLoader(loader);
-      }
       submitJob(conf);
     } catch (OptionException oe) {
       cli.printUsage();


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to