Java 在配置中设置HDFS的根目录
我有一个目录结构:Java 在配置中设置HDFS的根目录,java,database,hadoop,hdfs,Java,Database,Hadoop,Hdfs,我有一个目录结构: / DIR files DIR usr 我的HDFS可在hdfs://db:123,因此我创建了配置: configuration.set("fs.default.name", "hdfs://db:123"); configuration.set("fs.default.name", "hdfs://db:123/files"); 然后,所有目录/路径都是相对于根目录的(/)。我创建了一个目录files,这就是我想要保存所有文件的地方 我必须手动将/f
/
DIR files
DIR usr
我的HDFS可在hdfs://db:123
,因此我创建了配置:
configuration.set("fs.default.name", "hdfs://db:123");
configuration.set("fs.default.name", "hdfs://db:123/files");
然后,所有目录/路径都是相对于根目录的(/
)。我创建了一个目录files
,这就是我想要保存所有文件的地方
我必须手动将/files/
附加到代码中每个路径的开头,还是可以创建配置:
configuration.set("fs.default.name", "hdfs://db:123");
configuration.set("fs.default.name", "hdfs://db:123/files");
并且不需要对代码进行任何更改?通常,如果未传递前导斜杠,则传递的路径是相对于用户HDFS主目录的路径,如果前缀为/,则传递的路径是绝对路径 如果在源代码中查找Path.makeQualified,则应该看到一个测试,测试路径是否为非绝对路径(这是从1.0.3开始的):
DistributedFileSystem.getWorkingDirectory()
在响应中使用名为workingDir的实例变量,可以使用setWorkingDirectory(path)
方法设置该变量。如果您不自己设置工作目录,默认为用户的主目录(如DistributedFileSystem.initialize(..)
方法中所示):
this.workingDir = getHomeDirectory();
和分布式文件系统.getHomeDirectory()
:
您似乎无法通过配置属性配置工作目录,因此您必须在提交作业之前调用以下命令(之后,所有相对路径都将相对于/文件):
FileSystem.get(configuration).setWorkingDirectory("/files");