Amazon web services 从s3a bucket检索最新的对象版本

Amazon web services 从s3a bucket检索最新的对象版本,amazon-web-services,amazon-s3,hdfs,hadoop2,Amazon Web Services,Amazon S3,Hdfs,Hadoop2,有没有办法在hadoop cli的帮助下,使用s3a连接器从支持s3版本控制的bucket获取最新的对象版本?如果下载并构建hadoop trunk(即最新的),那么您可以在自己的代码列表中调用fs.getFileStatus(filepath)(其中fs是s3a路径上filesystem.get()中的文件系统),然后记录您将看到的值:我们现在将它和etag包含在S3AFileStatus类中,它的toString()将打印它 在Hadoop 3.1+中,如果应用程序配置将“fs.s3a.et

有没有办法在hadoop cli的帮助下,使用s3a连接器从支持s3版本控制的bucket获取最新的对象版本?

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

在Hadoop 3.1+中,如果应用程序配置将“fs.s3a.etag.checksum.enabled”设置为true(长话短说),则可以从fs.getFileChecksum获取etag值。这在HDP-3.0中,也可能在CDH 6.2中。没有版本,但如果你知道etag,你可以检查


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

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