有什么方法可以在hadoop cli的帮助下,使用s3a连接器从启用了s3版本控制的存储桶中获取最新的对象版本?
答案 0 :(得分:0)
如果下载并构建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,我们可以防止有人在读取文件时更新文件-您'会始终获取您开始使用的版本,即使该版本已被覆盖