我应该使用哪种AWS服务来处理大型文本文件?

我有一个用例,我需要读取一个非常大的文本文件,可以包含多达100万条记录 . 对于每条记录,我必须执行一些验证,然后将其转换为不同的JSON,然后将其推送到SNS主题 . 我不需要按顺序读取它们,因此我可以使用并行性 . 一种选择是将文件放入S3存储桶,然后使用lambda处理文件,该文件将记录扇出(异步)到多个lambda函数,这些函数负责转换(&验证),然后将其推送到SNS . 另一种选择是使用kinesis流并使用多个lambdas做同样的事情 . Multiple Lambdas using kinesis streams

应该是什么理想的方法呢?

  • S3 - > Lambda - >多个Lambda - > SNS

  • Kinesis - >多个Lambda(或Lambda - >多个Lambda - > SNS)

回答(1)

2 years ago

您可能需要查看AWS Glue . 此服务可以对存储在S3中的大多数内容执行ETL,因此可以省去自己这样做的麻烦 . 结合S3触发Lambda这可能是一个有趣的选择吗?

Edit: 如果文件可以用RegExs解析,也许试试Athena?雅典娜相对便宜,可以毫不费力地处理更大的文件 .

如果记录具有可预测的长度,则可以使用范围请求在将文件传递给Lambda之前对文件进行除法,从而防止长时间运行 .

另外,您是否尝试过使用Lambda解析和分块文件? 100万条记录并不多,简单的分割和处理(块)到验证(或者可能是SNS)应该不是问题 .