【问题标题】:Retrieving Latest Object Version from s3a bucket从 s3a 存储桶中检索最新的对象版本
【发布时间】:2019-10-19 16:14:46
【问题描述】:

有没有什么方法可以在 hadoop cli 的帮助下使用 s3a 连接器从启用了 s3 版本控制的存储桶中获取最新的对象版本?

【问题讨论】:

  • 我认为您只是正常访问该对象。它总是返回“当前”(最新)版本。
  • 但是如何确认访问的对象是最新的。我无法看到以它为后缀的版本 ID。有没有办法使用hadoop cli获取指定版本/所有版本?
  • 如果您请求一个对象而没有指定 VersionId,那么将始终返回最新版本。我不确定如何通过 Hadoop CLI 指定特定版本。希望其他人能够发表评论。
  • @JohnRotenstein,有没有办法在 Spark/Scala 中获取特定对象的所有版本?
  • 如果您使用 AWS 开发工具包,您可以访问特定版本。不过,我不确定 Spark/Scala 使用的其他接口。

标签: amazon-web-services amazon-s3 hdfs hadoop2


【解决方案1】:

如果您下载并构建 hadoop 主干(即最新版本),那么您可以在自己的代码列表中调用 fs.getFileStatus(filepath)(其中 FS 是 s3a 路径上 FileSystem.get() 中的文件系统),然后记录您'将看到值:我们现在将它包含在 S3AFileStatus 类中,etag 和它的toString() 将打印它。

在 Hadoop 3.1 + 中,您可以从 fs.getFileChecksum 获取 etag 值,前提是您的应用配置将“fs.s3a.etag.checksum.enabled”设置为 true(长篇大论)。这在 HDP-3.0 中,也可能在 CDH 6.2 中。那里没有版本,但如果你知道 etag,你可以检查一下。

至于它是否是“最新的”,请记住我们最终会得到一致的列表:我们列出了 s3 提供给我们的内容,如果您用较新版本覆盖文件,我们可能会重新获得列表。版本控制的作用是确保在覆盖/删除时您仍然可以恢复旧版本(AWS 工具)以及未来 Hadoop 版本中的 S3A,我们可以防止有人在您阅读文件时更新文件 - 您将始终获得您开始使用的版本,即使它已被覆盖

【讨论】:

    猜你喜欢
    • 2022-12-05
    • 1970-01-01
    • 2018-01-27
    • 2010-11-27
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    相关资源
    最近更新 更多