从s3a存储桶中检索最新的对象版本

时间:2019-06-04 06:47:16

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

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

1 个答案:

答案 0 :(得分:0)

如果下载并构建hadoop Trunk(即最新版本),则可以在自己的代码列表中调用fs.getFileStatus(filepath)(其中FS是s3a路径上FileSystem.get()的文件系统),然后登录您将看到这些值:现在,我们将其包括在内,并将etag包含在S3AF​​ileStatus类中,并使用其toString()进行打印。

在Hadoop 3.1及更高版本中,只要您的应用程序配置将“ fs.s3a.etag.checksum.enabled”设置为true(长话),便可以从fs.getFileChecksum获取etag值。那是在HDP-3.0中,可能也在CDH 6.2中。那里没有版本,但是如果您知道etag,就可以检查。

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