我有多个CSV文件,其中包含不同表的数据,不同的文件大小从1 MB到1.5 GB不等。我想逐行处理数据(替换/删除列的值),然后将数据加载到现有的 Redshift 表中。这是每天一次的批处理。
-
AWS Lambda:
- Lambda 内存有限,因此我无法为大型 CSV 文件运行进程。
EC2 - :我已经有EC2实例,我在其中运行 python 脚本来转换数据并将其加载到红移。
- 我一直保持EC2运行,其中包含我想为创建的所有表和环境运行的所有python脚本(安装
python, psycopg lib
等),导致成本增加。
- 我一直保持EC2运行,其中包含我想为创建的所有表和环境运行的所有python脚本(安装
- AWS 批处理:
- 我创建了一个容器映像,其中包含运行 python 脚本的所有设置,并将其推送到 ECR。
- 然后,我设置了 AWS Batch 作业,该作业可以获取此容器映像并通过 ECS 运行它。
- 这是更优化的,我只为使用的EC2和ECR图像存储付费。
- 但是,我必须在个人桌面上进行所有开发和单元测试,然后推送容器,无需内联AWS服务进行测试。
- AWS 工作区:
- 我对 AWS 工作区不太熟悉,但需要输入,这也可以用作 aws 批处理以在需要时启动和停止实例并在其上运行 python 脚本、编辑或测试脚本。
- 另外,我可以安排它每天在定义的时间运行吗?
我需要输入哪种服务最适合此类用例的优化解决方案?或者,如果有人建议以更好的方式使用我提到的上述服务的更好方法,那也很棒。
批处理最适合您的用例。我看到您对批处理的关注是关于个人桌面上的开发和单元测试。您可以使用 AWS ECR、CodePipeline、CodeCommit 和 CodeBuild 自动执行该过程。设置管道以检测对代码存储库所做的更改,生成映像并将其推送到 ECR。批处理可以从那里获取最新图像。