【发布时间】:2018-05-31 03:30:33
【问题描述】:
如果在创建子目录时父目录不存在,我希望 HDFS 命令失败。当我使用FileSystem#mkdirs 中的任何一个时,我发现没有引发异常,而是创建了不存在的父目录:
import java.util.UUID
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{FileSystem, Path}
val conf = new Configuration()
conf.set("fs.defaultFS", s"hdfs://$host:$port")
val fileSystem = FileSystem.get(conf)
val cwd = fileSystem.getWorkingDirectory
// Guarantee non-existence by appending two UUIDs.
val dirToCreate = new Path(cwd, new Path(UUID.randomUUID.toString, UUID.randomUUID.toString))
fileSystem.mkdirs(dirToCreate)
如果没有检查存在的繁琐负担,如果父目录不存在,如何强制 HDFS 抛出异常?
【问题讨论】:
-
不确定是否可以。文档说它确实
mkdir -p相当于 hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/… -
@cricket_007 不知道 API 的其他部分是否有几乎相同的功能。
-
好吧,
hdfs dfs -mkdir的 CLI 不会自己创建父目录...我得看看那个代码 -
我知道我在某处看到了一个用于创建目录的布尔参数