diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapRedTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapRedTask.java index 8ed52e239e..a4d40f5827 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapRedTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/mr/MapRedTask.java @@ -50,11 +50,14 @@ import org.apache.hadoop.hive.ql.session.SessionState; import org.apache.hadoop.hive.ql.session.SessionState.ResourceType; import org.apache.hadoop.hive.shims.ShimLoader; +import org.apache.hadoop.hive.shims.Utils; import org.apache.hive.common.util.HiveStringUtils; import org.apache.hive.common.util.StreamPrinter; import org.apache.hadoop.mapred.RunningJob; import org.json.JSONException; +import static org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod.PROXY; + /** * Extension of ExecDriver: * - can optionally spawn a map-reduce task from a separate jvm @@ -73,6 +76,7 @@ static final String HIVE_MAIN_CLIENT_DEBUG_OPTS = "HIVE_MAIN_CLIENT_DEBUG_OPTS"; static final String HIVE_CHILD_CLIENT_DEBUG_OPTS = "HIVE_CHILD_CLIENT_DEBUG_OPTS"; static final String[] HIVE_SYS_PROP = {"build.dir", "build.dir.hive", "hive.query.id"}; + static final String HADOOP_PROXY_USER = "HADOOP_PROXY_USER"; private transient ContentSummary inputSummary = null; private transient boolean runningViaChild = false; @@ -254,6 +258,10 @@ public int execute(DriverContext driverContext) { configureDebugVariablesForChildJVM(variables); } + if (PROXY == Utils.getUGI().getAuthenticationMethod()) { + variables.put(HADOOP_PROXY_USER, Utils.getUGI().getShortUserName()); + } + env = new String[variables.size()]; int pos = 0; for (Map.Entry entry : variables.entrySet()) {