Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在配置中设置HDFS的根目录_Java_Database_Hadoop_Hdfs - Fatal编程技术网

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");