【问题标题】:How to read huge .gz file in S3, as I'm getting memory error while reading如何在 S3 中读取巨大的 .gz 文件,因为我在读取时遇到内存错误
【发布时间】:2022-02-10 02:02:54
【问题描述】:

我正在尝试在 S3 中读取 .gz 文件,共有 120 个文件,我想将所有文件合并为一个文件。

附:每个文件的大小在(419MB 到 900MB)之间。

output = []        
for i in files:
    if i.endswith('.gz'):
        obj = s3.Object(bucket_name=bucket ,key=i)
        with gzip.GzipFile(fileobj=obj.get()['Body']) as gzipfile:
            content = gzipfile.read()
            output.append(content)

我在这一行遇到 MemoryError content = gzipfile.read()

【问题讨论】:

  • 如果文件大小范围符合规定,那么我们假设平均大小为 660MB。现在将它乘以 120,得到大约 77GB。您的机器是否能够在内存中维护这么多数据(加上其他开销)?
  • 明白你的意思。谢谢! @OlvinR​​oght
  • 您的帖子中没有任何 AWS 或 S3 特定内容。这看起来像是您从 S3 下载一些文件后正在运行的代码,此时它只是关于读取本地文件。

标签: python amazon-web-services amazon-s3 gzip


【解决方案1】:

代替gzipfile.read(),使用循环来执行gzipfile.read(buffersize),其中buffersize 是要加载到内存和处理中的合理数量的未压缩字节。当您没有返回任何字节时,您将退出循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 2018-10-13
    • 2013-04-30
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多