首页 > 解决方案 > 在 AWS Lambda 函数中从 S3 拆分大型 CSV 文件以读取

问题描述

我有一个 2GB 的巨大 CSV 文件要上传到 AWS lambda 函数。Lambda 函数的最长时间为 15 分钟,并且不能超过。当代码到达需要从 S3 读取该巨大文件并将其转换为 python 代码中的数据帧的部分时,它只会继续处理并且我面临退出时间错误。我不能创建多个 lambda 函数来读取它,而是在单个 lambda 函数中读取那个大文件。我理解将文件拆分为更小的块并将每个块作为文件读取的概念,然后我想将所有块附加到一个数据框中,我可以工作。显然,我的进一步功能需要创建整个数据框,而不是小数据框。

我正在使用此代码从 s3 读取文件:


    s3 = boto3.client('s3')
    Bucket_Dest = buckets['DbBucket']
    file_name = "/Temp_File/" + BlastFolder + fileName
    file_merge = s3.get_object(Bucket = Bucket_Dest, Key = file_name)
    file_content = file_merge['Body'].read()
    read_csv_data = io.BytesIO(file_content)
    df = pd.read_csv(read_csv_data)

未创建名为“df”的数据框,因为来自 s3 的文件由于其较大而未加载。请帮助我如何通过拆分和附加来加载文件。

谢谢

标签: pythonamazon-web-servicesamazon-s3aws-lambda

解决方案


推荐阅读