diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java index 179ad29..930d739 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ExecDriver.java @@ -622,6 +622,7 @@ public static void main(String[] args) throws IOException, HiveException { boolean noLog = false; String files = null; boolean localtask = false; + String addedJarsFromLocal = null; try { for (int i = 0; i < args.length; i++) { if (args[i].equals("-plan")) { @@ -634,8 +635,11 @@ public static void main(String[] args) throws IOException, HiveException { files = args[++i]; } else if (args[i].equals("-localtask")) { localtask = true; + } else if (args[i].equals("-addedJarsFromLocal")) { + addedJarsFromLocal = args[++i]; } } + } catch (IndexOutOfBoundsException e) { System.err.println("Missing argument to option"); printUsage(); @@ -717,6 +721,9 @@ public static void main(String[] args) throws IOException, HiveException { if (StringUtils.isNotBlank(addedJars)) { loader = Utilities.addToClassPath(loader, StringUtils.split(addedJars, ",")); } + if (StringUtils.isNotBlank(addedJarsFromLocal)) { + loader = Utilities.addToClassPath(loader, StringUtils.split(addedJarsFromLocal, ",")); + } conf.setClassLoader(loader); // Also set this to the Thread ContextClassLoader, so new threads will // inherit diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java index 63f41ae..76eb089 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java @@ -251,6 +251,11 @@ public int execute(DriverContext driverContext) { LOG.debug("Setting env: " + env[pos-1]); } + //add extra paths + String addedJarsFromLocal = Utilities.getResourceFiles(conf, SessionState.ResourceType.JAR); + if (StringUtils.isNotBlank(addedJarsFromLocal)) { + cmdLine += " -addedJarsFromLocal " + addedJarsFromLocal; + } LOG.info("Executing: " + cmdLine); // Run ExecDriver in another JVM