Hadoop FileSystem.mkdirs(path,permission)忽略该权限

时间:2015-09-15 12:27:19

标签: java hadoop hdfs

我正在尝试以编程方式在hdfs中创建目录。我需要所有用户都可以写入该目录。所以我试着将这些内容传递给mkdirs:

Path dir = new Path("/tmp/mkdir-test");    
fileSystem.mkdirs(dir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL));

但是,结果是我获得了drwxr-xr-x权限的目录。这似乎不是一些整体权限问题,因为如果我在下一行明确设置它们:

// For some reason the initial permissions are ignored
fileSystem.setPermission(dir, new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL));

目录以drwxrwxrwx正确结束。

为什么传递给mkdirs的权限不受尊重?

1 个答案:

答案 0 :(得分:3)

尽管实际方法的javadoc没有提及任何内容,但是静态方法FileSystem.mkdirs(FileSystem, Path, FsPermission)提供了一些解释:

  

使用提供的权限创建目录。   的许可   目录设置为setPermission中提供的权限,   不许可&〜umask。

事实证明,标准mkdirs使用umask与给定的权限进行了对比。

静态实用程序方法是mkdirssetPermission

的组合实现的