diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index 3ea2163..113227d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -82,8 +82,6 @@ import java.util.zip.DeflaterOutputStream; import java.util.zip.InflaterInputStream; -import javax.security.auth.login.LoginException; - import org.antlr.runtime.CommonToken; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.StringUtils; @@ -179,7 +177,6 @@ import org.apache.hadoop.mapred.Reporter; import org.apache.hadoop.mapred.SequenceFileInputFormat; import org.apache.hadoop.mapred.SequenceFileOutputFormat; -import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.util.ReflectionUtils; import org.apache.hadoop.util.Shell; @@ -3384,8 +3381,7 @@ public static int getFooterCount(TableDesc table, JobConf job) throws IOExceptio */ public static boolean createDirsWithPermission(Configuration conf, Path mkdir, FsPermission fsPermission) throws IOException { - // this umask is required because by default the hdfs mask is 022 resulting in - // all parents getting the fsPermission & !(022) permission instead of fsPermission + boolean recursive = false; if (SessionState.get() != null) { recursive = SessionState.get().isHiveServerQuery() && @@ -3406,16 +3402,23 @@ public static boolean createDirsWithPermission(Configuration conf, Path mkdir, public static boolean createDirsWithPermission(Configuration conf, Path mkdir, FsPermission fsPermission, boolean recursive) throws IOException { String origUmask = null; + if (recursive) { origUmask = conf.get("fs.permissions.umask-mode"); + // this umask is required because by default the hdfs mask is 022 resulting in + // all parents getting the fsPermission & !(022) permission instead of fsPermission conf.set("fs.permissions.umask-mode", "000"); } + FileSystem fs = mkdir.getFileSystem(conf); boolean retval = fs.mkdirs(mkdir, fsPermission); - if (origUmask != null) { - conf.set("fs.permissions.umask-mode", origUmask); - } else { - conf.unset("fs.permissions.umask-mode"); + + if (recursive) { + if (origUmask != null) { + conf.set("fs.permissions.umask-mode", origUmask); + } else { + conf.unset("fs.permissions.umask-mode"); + } } return retval; }