【发布时间】:2018-06-24 18:38:54
【问题描述】:
我有一个用例,我需要读取一个非常大的文本文件,该文件最多可包含 100 万条记录。对于每条记录,我必须执行一些验证,然后将其转换为不同的 JSON,然后将其推送到 SNS 主题。我不需要按顺序阅读它们,因此我可以使用并行性。一种选择是将文件放在 S3 存储桶中,然后使用 lambda 处理文件,该文件将记录扇出(异步)到多个 lambda 函数,这些函数负责转换(和验证),然后将其推送到 SNS。另一种选择是使用运动流并使用多个 lambdas 做同样的事情。 Multiple Lambdas using kinesis streams
理想的方法应该是什么?
- S3 -> Lambda -> 多个 Lambdas -> SNS
- Kinesis -> 多个 Lambda(或 Lambda -> 多个 Lambda -> SNS)
【问题讨论】:
-
你的记录是什么格式的? CSV?还有什么?使用 Kinesis 仅在您需要某种排序或将有多个数据源时才明智,因此我认为没有必要这样做。
-
您多久会这样做一次?这只是一次性的活动,永远不会重复吗?尽快完成它有什么特别的好处吗?您是否有进行转换的现有代码(如果有,它是什么语言)?处理一条记录需要多长时间,或者与 I/O 时间相比可以忽略不计?如果您有执行此任务的现有程序(没有并行处理),需要多长时间?
-
@JohnRotenstein。这将是每周重复一次的任务。快速完成它并没有什么特别的好处。我有现有的代码(在 Java 中)。与 I/O 相比,它可以忽略不计,因为它只是以一种新格式获取和设置,并在元数据中添加了一些字段。我目前没有执行此任务的现有程序。
-
一百万条记录并不是一个大文件,除非每条记录都有几兆字节长。即便如此,它也完全在单台机器的能力范围内。除非这些记录在多台机器上生成并聚合,否则 Kinesis 只会增加复杂性。我只想编写一个在 EC2 实例上运行的程序。如果要添加调度,请在 AWS Batch 上运行。
标签: amazon-web-services amazon-s3 aws-lambda amazon-kinesis