python - 在 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 的文件由于其较大而未加载。请帮助我如何通过拆分和附加来加载文件。
谢谢
解决方案
推荐阅读
- sql - 如何通过 ISA SERVER 2006 发布 1434 UDP 端口?
- reactjs - 警告:失败的道具类型:道具“消息”在“提示”中标记为必需,但其值为“未定义”
- c++ - 在 QT 中向小部件添加彩色边框的最佳方法是什么
- javascript - 包含特殊字符的字符串数组
- c - 使用scanf将csv文件读入C中的结构
- java - 不可解析的 POM,END_TAG 看到,spring-security-bom
- python - python从文件读取时用字符串替换换行符
- angularjs - 得到响应后调用服务 - AngularJS
- tomcat - 使用 InteliJ IDEA 将工件部署到 Tomcat 后未显示 Jenkins 登录页面
- spring-boot - SpringBoot报错:找不到driverClassName=oracle.jdbc.driver.OracleDriver的注册驱动,尝试直接实例化