我习惯于使用 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”,听起来是可以的。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!