来自Java的"chmod" Hadoop路径



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

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 
{
}

未使用 Hadoop v 2.6.0 ~ 2.8.0 实现(分别为:)

我的问题如何使用java代码向Hadoop路径添加读/写权限?

首先,您可能需要交叉检查分析结果。例如,如果你看这里,你会发现文件系统实际上是一个抽象类。因此,如果在某个时候实际实例化的特定子类覆盖了该空方法setPermissions()- 例如基于底层操作系统,我不会感到惊讶。

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

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

从爪哇内部。并写下:

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