首页 > 解决方案 > 延长 aws firehose 流缓冲期

问题描述

我可以以某种方式将 firehose 流缓冲间隔的持续时间延长到 900 秒以上吗?在流式传输到 s3 15 分钟后,我正在处理大小约为 100kb 的小文件。我需要延长缓冲间隔或其他方式来每小时合并 4 个文件,最好的方法是什么?

我不想下载这些文件然后进行合并,因为有很多 firehose 流,所以只考虑 AWS 上的直接解决方案。

我已经阅读了很多与此问题相关的内容,但找不到任何有用的答案。

标签: amazon-web-servicesamazon-s3aws-lambdaaws-sdkamazon-kinesis-firehose

解决方案


不幸的是,900 秒(15 分钟)是 Kinesis 等待缓冲时间的硬性限制。

但是,如果您的数据移动缓慢,那么您可以自己处理每小时合并。

一种解决方法是使用 lambda 函数,该函数计划每小时调用一次,列出目标存储桶中的文件,读取它们,合并它们,将它们写入“合并”存储桶/前缀,然后删除合并的文件。

或者,您可以在写入文件时调用 S3 消防软管桶上的 lambda 触发器。此触发器将读取该存储桶中的所有文件,并将它们合并。它的优点是您可以并行合并您的存储桶,并且不必等待一个小时来合并您的文件。

(您应该注意,S3 在快速写入速度或列出大量文件时不一致,因此如果您的数据速度增加到您每分钟写入多个文件的程度,这不是一个好的解决方案。)


推荐阅读