如何从 S3 下载大型 csv 文件而不遇到“内存不足”问题?

avi*_*jay 4 amazon-s3 amazon-web-services boto3

我需要处理存储在 S3 存储桶中的大文件。我需要将 csv 文件分成更小的块进行处理。然而,这似乎是一项在文件系统存储上而不是在对象存储上做得更好的任务。因此,我计划将大文件下载到本地,将其分成较小的块,然后将生成的文件一起上传到不同的文件夹中。我知道该方法download_fileobj,但无法确定out of memory在下载大小 ~= 10GB 的大文件时是否会导致错误。

Joh*_*ein 5

我建议使用download_file()

import boto3
s3 = boto3.resource('s3')
s3.meta.client.download_file('mybucket', 'hello.txt', '/tmp/hello.txt')
Run Code Online (Sandbox Code Playgroud)

下载时不会耗尽内存。Boto3 将负责转移过程。