You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Glue任务循环读取Parquet写入Aurora速度慢,有什么优化方法?

性能优化方案

当前逐个读取文件+同步单条写入的瓶颈主要在两部分:一是单文件小IO读取的开销过高,二是数据库单条提交的事务开销远大于数据写入本身,可按以下层级优化:

读取+数据合并优化

  • 替换单文件循环读取逻辑,使用Pandas/Arrow的Parquet批量读取能力,一次性加载符合时间范围的多个Parquet文件到内存批次,单批次大小可按内存配置设为1~10万条。
  • 数据合并操作前置到内存批次中完成:如果需要对重复主键记录去重、同主键字段做聚合计算,直接在批次内存里处理后再写入数据库,减少实际需要入库的数据量。
  • 过滤逻辑提前到读取阶段:读取Parquet时直接根据水位文件的last_modified_time和end_time做行过滤,不需要加载全量数据后再筛选,大幅降低无效IO。

数据库写入优化

  • 把单条同步写入改为批量提交,使用Aurora支持的批量INSERT语法,每批次提交1000~10000条记录,可降低90%以上的事务提交开销。
  • 关闭数据库连接的自动提交配置,按写入批次手动提交事务,避免每次写入都触发磁盘刷写。
  • 无行锁冲突的场景下可开启并行写入,用多线程/多进程同时写入不同批次的数据,Aurora兼容MySQL/PostgreSQL的并发写入机制,合理设置4~8的并发度可提升数倍写入效率。

大数据量场景的全链路方案

如果数据量达到百GB/TB级别,可直接使用AWS原生能力跳过自定义读写逻辑:

  • 无需做自定义数据处理的场景,直接使用Aurora的S3数据导入语句:
LOAD DATA FROM S3 's3://bucket/app-events/year=201909/' 
INTO TABLE your_table_name
PARQUET
WHERE modified_time BETWEEN '2021-09-01 00:00:00' AND '2022-09-02 23:59:59';

该操作由Aurora内部实现并行读取、批量写入,效率比自定义代码高5~10倍。

  • 需要做自定义合并逻辑的场景,可使用PySpark或者AWS Glue ETL作业,分布式读取S3 Parquet文件完成数据合并后,批量写入Aurora,TB级数据处理耗时通常在半小时以内。

内容的提问来源于stack exchange,提问作者Iram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:18:04