Index: common/src/java/org/apache/hadoop/hive/conf/HiveConf.java =================================================================== --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (revision 1589512) +++ common/src/java/org/apache/hadoop/hive/conf/HiveConf.java (working copy) @@ -1022,6 +1022,16 @@ HIVE_CHECK_CROSS_PRODUCT("hive.exec.check.crossproducts", true), HIVE_LOCALIZE_RESOURCE_WAIT_INTERVAL("hive.localize.resource.wait.interval", 5000L), // in ms HIVE_LOCALIZE_RESOURCE_NUM_WAIT_ATTEMPTS("hive.localize.resource.num.wait.attempts", 5), + + // In Windows OS, HiveServer2 service is started via service console which accepts an + // input xml file for configuration setting. There is no direct mechanism to pass an + // environment variable as part of service startup script. So, we need to pass hive related + // classpath such as $HIVE_HOME/lib via the hiveconf parameter, hive.hadoop.classpath. + // hive.hadoop.classpath is set in the input xml file used to start HiveServer2 service. + // The hive related classpath is required for "hadoop jar" call made internally from hive. + // Example Usage in hive : hadoop jar org.apache.hadoop.hive.ql.exec.mr.ExecDriver -localtask + // -plan plan001.xml -hiveconf hive.hadoop.classpath=%HIVE_LIB% + HIVE_HADOOP_CLASSPATH("hive.hadoop.classpath", null), ; public final String varname; Index: ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java (revision 1589512) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapredLocalTask.java (working copy) @@ -229,6 +229,18 @@ variables.put(HADOOP_OPTS_KEY, hadoopOpts); } + // For Windows OS, we need to pass HIVE_HADOOP_CLASSPATH java parameter + // while starting hiveserver2 using "-hiveconf hive.hadoop.classpath=%HIVE_LIB%" + if (HiveConf.getVar(conf, HiveConf.ConfVars.HIVE_HADOOP_CLASSPATH)!= null) { + if (variables.containsKey("HADOOP_CLASSPATH")) { + variables.put("HADOOP_CLASSPATH", variables.get("HADOOP_CLASSPATH") + ";" + + HiveConf.getVar(conf, HiveConf.ConfVars.HIVE_HADOOP_CLASSPATH)); + } else { + variables.put("HADOOP_CLASSPATH", + HiveConf.getVar(conf, HiveConf.ConfVars.HIVE_HADOOP_CLASSPATH)); + } + } + if(variables.containsKey(MapRedTask.HIVE_DEBUG_RECURSIVE)) { MapRedTask.configureDebugVariablesForChildJVM(variables); }