我有一个巨大的S3文件(3.5 TB),需要在EC2实例上进行处理。 现在,该实例具有500 GB的磁盘空间。我希望不要增加它。
文件可以分批处理。因此我在考虑下载 7个500 GB的块,并按顺序处理每个部分。
如何快速下载S3文件的大部分内容?
使用boto3,我可以使用s3.download_file()
下载整个文件。
我可以通过某种方式仅下载文件的一部分吗?
我还可以读取文件的一部分:
s3 = boto3.resource('s3')
obj = s3.Object(bucket, key)
f = obj.get()['Body']
f.read(N)
此方法的问题是N = 500 GB,因此它不适合内存。我可能会编写一些读取较小块并写入文件的代码。但是,我想亚马逊提供的代码比我自己编写的代码在优化此功能方面会做得更好?
我也尝试过aws s3 cp
。这很快,但是似乎没有任何方法可以仅下载文件的一部分。