我有一个包含150万个对象(约5tb数据)的文件夹,其中包含下一个格式为123-John的文件夹。我需要将所有这些文件夹的内容复制到新文件夹中,重命名为123格式。我想用java来实现。
显然我不能像这样一个一个地做:
ObjectListing objectListing = s3.listObjects(listObjectsRequest);
boolean processable = true;
while (processable) {
processable = objectListing.isTruncated();
renameAndCopyOneByOne(objectListing.getObjectSummaries()); // this edits name and makes call to s3.copyObject()
if (processable) {
objectListing = s3.listNextBatchOfObjects(objectListing);
}
}
将导致大约150万个呼叫
s3.copyObject(bucket, sourceKey, bucket, destinationKey)
我想用批处理来做,但问题是,它只能通过创建CSV格式的清单文件来完成,格式如
bucketName,keyName
但这只是我想要对其进行操作的对象。我无法列出要保存到的位置并指定编辑的文件夹名称。而且我还必须将150万的CSV拆分为更小的CSV,并向S3创建几个请求以创建几个作业,这将不明显地跟踪。
您能给我一个提示吗? AWS的哪些工具可以完全满足我对这项任务的所有需求?
嗯,花了一些时间在如何正确地做它之后,我认为唯一的方法是从Java中通过一些批处理作业进行这样的迁移,以分割负载。因为AWS没有适合我的工具。