一个 Python Shell 作业不能使用多个 DPU。这意味着它的内存限制为 16 GB。
今天早些时候,我将我认为是适度的 ETL 任务连接到具有 1 个 DPU 的 AWS Glue。它是用 Python Shell 编写的。它运行了仅仅10多分钟。理论上,此任务查询 EC2 中托管的 Microsoft SQL Server 并生成 3,000,000 行和大约 250 列,并将其写入 CSV。 CSV 应约为 2.5 GB。在实践中,我得到了
由于内存不足,命令失败
来自胶水。据我所知,这个错误不是来自SQL;而是来自SQL。这是因为 1 个 DPU 不够。批处理查询并写入 CSV 解决了这个问题,但我不希望需要这样做。
这让我非常困惑。我不认为 2.5 GB 的数据对于 ETL 来说是不合理的。作为一个有 SQL 背景的人,我早餐吃了 2.5 GB,几年前我在 SSIS 中执行了同样的任务。 Python 不会对数据进行任何复杂的操作。它只是从 SQL 中获取数据并将其写入 S3 上的新 CSV 文件。
这给了我我的问题。 AWS Glue 被宣传为云规模 ETL 工具,但我的上述经验表明它无法管理适度的 ETL 任务。我缺少什么以及如何克服这些限制?