我习惯于使用 FileSystem在 hdfs(和用于测试的本地 FS)中执行文件操作。最近我遇到了原子重命名的需要,虽然 FileSystem 有一个 overloaded method具有这样的能力:
protected void rename(Path src, Path dst, org.apache.hadoop.fs.Options.Rename... options)
它受到保护并已弃用。我试图找到解决这个问题的方法并找到了 FileContext它具有相同的方法并且工作正常。我在 Internet 上可以找到的每个示例都使用 FileSystem
。所以我想知道为什么有两个类做同样的事情,在我的例子中可以使用 FileContext
吗?
请您参考如下方法:
documentation请注意,对于具有三个参数的 FileSystem.rename
版本:
此方法已弃用,因为它是添加的临时方法,用于支持用户应用程序从 FileSystem 到 FileContext 的转换。
对于您的问题“在我的情况下是否可以使用 FileContext”,听起来是可以的。