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

Hadoop FileSystem.mkdirs(path, permission) ignores the permission

我正在尝试以编程方式在 hdfs 中创建目录。我需要该目录对所有用户都是可写的。所以我尝试像这样将 perissions 传递给 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 的权限不被接受?

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

Create a directory with the provided permission. The permission of the directory is set to be the provided permission as in setPermission, not permission&~umask.

结果是标准 mkdirs AND 给定权限与 umask。

静态实用程序方法作为 mkdirssetPermission

的组合实现