"chmod" 来自 Java 的 hadoop 路径

"chmod" hadoop path from Java

我所做的基本上是使用 java 代码自动执行一些 shell 命令(这些命令包括 hadoop shell 命令),现在我正在 [=31] 上执行以下命令=]:

hadoop fs -mkdir path//tp//folder
hadoop fs -chmod a+w path//to//folder

一切正常,现在什么时候尝试使用 java 代码来执行相同的操作:

org.apache.hadoop.fs.FileSystem.mkdir(new Path("path//to//folder"),new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL))

不幸的是这个方法:

public void setPermission(Path p, FsPermission permission) throws IOException 
{
}

未实现(分别为:empty)with hadoop v 2.6.0 ~ 2.8.0

我的问题是如何使用 java 代码向 hadoop 路径添加 read/write 权限?

首先,您可能想要交叉检查您的分析结果。例如,如果您查看 here,您会发现 FileSystem 实际上是一个 abstract class。因此,如果 specific subclass 实际上在某个点 overrides 那个空方法 setPermissions() ,我不会感到惊讶- 例如,基于基础 OS。

无论如何,有一个简单但丑陋的解决方法:使用 ProcessBuilder 和 运行

hadoop fs -chmod a+w path//to//folder

来自 Java。并记下:

// TODO: check with next version of hadoop if fs.FileSystem.setPermission() is now implemented