我在 S3 上存储了数百万个文件中的大量文本数据。我经常想对每个文件执行某些操作,这些操作只使用该文件并从中创建一个新文件。通常,我会使用公司的 DataBricks 来实现这一点,但它的锁定程度很高,很难在那里部署复杂的代码。
我一直在考虑使用 AWS Batch 和 Spot 实例来替代 DataBricks 来完成其中一些任务。我当然希望使用多个节点,因为最大的单个节点无法在合理的时间范围内完成工作。当然,也有专为分布式计算而设计的技术,比如 Apache Spark,但我 (a) 对自己建立自己的 Spark 集群的能力没有信心,(b) 不相信 Spark 对于如此简单的分布式计算任务是必需的。从根本上讲,我所需要的只是让节点传达它们计划处理哪些文件、它们完成了什么以及它们何时关闭。将所有这些信息保存在数据库中会很简单,尽管很乏味,而且我不需要将所有数据转换成另一个分布式文件系统。
是否存在适合这种用例的现有技术?
答案1
使用 Lambda 的 S3 批量操作是否可行?您需要提供对象列表和要在每个对象上运行的 lambda 函数。然后,S3 批量操作将使用每个对象名称运行 lambda 函数并向您提供结果报告。
https://docs.aws.amazon.com/lambda/latest/dg/services-s3-batch.html