0

我有多个 CSV 文件,其中包含不同表的数据,不同的文件大小从 1 MB 到 1.5 GB 不等。我想逐行处理数据(替换/删除列的值),然后将数据加载到现有的 Redshift 表中。这是一天一次的批处理。

  1. AWS 拉姆达
    • Lambda 有内存限制,因此我无法为大型 CSV 文件运行进程。
  2. EC2:我已经有 EC2 实例,我在其中运行 python 脚本来转换数据并将其加载到 redshift。
    • 我一直保持 EC2 运行,其中包含我想要为创建的所有表和环境(安装python, psycopg lib等)运行的所有 python 脚本,这会导致更多成本。
  3. AWS 批次
    • 我创建了一个容器映像,其中包含运行 python 脚本的所有设置,并将其推送到 ECR。
    • 然后我设置了 AWS Batch 作业,它可以获取这个容器映像并通过 ECS 运行它。
    • 这更加优化,我只为使用的 EC2 和 ECR 图像存储付费。
    • 但是我必须在我的个人桌面上进行所有的开发和单元测试,然后推送一个容器,而不需要内联 AWS 服务进行测试。
  4. AWS 工作区
    • 我对AWS Workspaces不太熟悉,但需要输入,这也可以用作aws批处理来在需要时启动和停止实例并在其上运行python脚本,编辑或测试脚本。
    • 另外,我可以安排它每天在规定的时间运行吗?

我需要输入哪种服务最适合此类用例的优化解决方案?或者,如果有人建议以更好的方式使用上述服务的更好方式,那也很棒。

4

1 回答 1

0

Batch 最适合您的用例。我看到您对批处理的关注是关于您个人桌面上的开发和单元测试。您可以使用 AWS ECR、CodePipeline、CodeCommit 和 CodeBuild 自动执行该过程。设置管道以检测对代码仓库所做的更改、构建映像并将其推送到 ECR。Batch 可以从那里获取最新的图像。

于 2022-01-20T09:43:02.717 回答