有没有办法使用 Lambda 进行 S3 文件连接?
我有 Firehose 以最长的可能间隔(15 分钟或 128mb)将数据流式传输到 S3,因此我每天有 96 个数据文件,但我想将所有数据聚合到一个每日数据文件中,以便在稍后读取数据时获得最快的性能在 Spark (EMR) 中。
我创建了一个解决方案,当 Firehose 将新文件流式传输到 S3 时,会调用 Lambda 函数。然后该函数从源存储桶中读取 (s3.GetObject) 新文件,并从目标存储桶中读取连接的每日数据文件(如果它已经与以前的每日数据一起存在,否则创建一个新文件),将两个响应主体解码为字符串,然后只需将它们加在一起并使用 s3.PutObject 写入目标存储桶(它会覆盖以前的聚合文件)。
问题是当聚合文件达到 150+ MB 时,Lambda 函数在读取两个文件时达到其 ~1500mb 内存限制,然后失败。
目前我的数据量很少,每天几百 MB-s,但这个数量在未来会呈指数增长。对我来说很奇怪 Lambda 的限制如此之低,并且已经用如此小的文件达到了它们。
或者连接 S3 数据的替代方案是什么,理想情况下由 S3 对象创建事件或以某种方式调用的计划作业,例如每天计划?