我应该使用哪种 AWS 服务来处理大型文本文件?
Which AWS service should I use to process large text file?
我有一个用例,我需要读取一个非常大的文本文件,该文件最多可以包含 100 万条记录。对于每条记录,我必须执行一些验证,然后将其转换为不同的 JSON,然后将其推送到 SNS 主题。我不需要按顺序阅读它们,因此我可以使用并行性。一种选择是将文件放在 S3 存储桶中,然后使用 lambda 处理文件,该文件将记录(异步)扇出到多个 lambda 函数,这些函数负责转换(和验证),然后将其推送到 SNS。另一种选择是使用运动流并使用多个 lambdas 做同样的事情。
执行此操作的理想方法应该是什么?
- S3 -> Lambda -> 多个 Lambda -> SNS
- Kinesis -> 多个 Lambda(或 Lambda -> 多个 Lambda -> SNS)
您可能想要查看 AWS Glue。此服务可以对存储在 S3 中的大部分内容执行 ETL,因此它可能会为您省去自己执行此操作的麻烦。结合 S3 触发 Lambda 这可能是一个有趣的选择?
编辑:
如果文件可以用 RegExs 解析,也许试试 Athena? Athena 相对便宜,可以毫不费力地处理更大的文件。
如果记录具有可预测的长度,您可以使用范围请求在将文件传递到 Lambda 之前分割文件,从而避免长 运行 次。
此外,您是否尝试过使用 Lambda 对文件进行解析和分块? 100 万条记录并没有那么多,简单的行拆分和传递(块)到验证(或者可能是 SNS)应该不是问题。
我有一个用例,我需要读取一个非常大的文本文件,该文件最多可以包含 100 万条记录。对于每条记录,我必须执行一些验证,然后将其转换为不同的 JSON,然后将其推送到 SNS 主题。我不需要按顺序阅读它们,因此我可以使用并行性。一种选择是将文件放在 S3 存储桶中,然后使用 lambda 处理文件,该文件将记录(异步)扇出到多个 lambda 函数,这些函数负责转换(和验证),然后将其推送到 SNS。另一种选择是使用运动流并使用多个 lambdas 做同样的事情。
执行此操作的理想方法应该是什么?
- S3 -> Lambda -> 多个 Lambda -> SNS
- Kinesis -> 多个 Lambda(或 Lambda -> 多个 Lambda -> SNS)
您可能想要查看 AWS Glue。此服务可以对存储在 S3 中的大部分内容执行 ETL,因此它可能会为您省去自己执行此操作的麻烦。结合 S3 触发 Lambda 这可能是一个有趣的选择?
编辑: 如果文件可以用 RegExs 解析,也许试试 Athena? Athena 相对便宜,可以毫不费力地处理更大的文件。
如果记录具有可预测的长度,您可以使用范围请求在将文件传递到 Lambda 之前分割文件,从而避免长 运行 次。
此外,您是否尝试过使用 Lambda 对文件进行解析和分块? 100 万条记录并没有那么多,简单的行拆分和传递(块)到验证(或者可能是 SNS)应该不是问题。