我正在尝试以编程方式在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
的权限不兑现? 最佳答案
尽管实际方法的javadoc没有提及任何内容,但是静态方法FileSystem.mkdirs(FileSystem, Path, FsPermission)
提供了一些解释:
因此,事实证明,标准mkdirs
将给定的权限与umask进行与。
静态实用程序方法实现为mkdirs
和setPermission
的组合
关于java - Hadoop FileSystem.mkdirs(路径,权限)忽略该权限,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32586093/