我可以以某种方式将firehose流缓冲时间间隔延长到900秒以上吗?流到s3 15分钟后,我正在处理大小约为100kb的小文件。我需要延长缓冲间隔或每小时合并4个文件的另一种方法,什么是最好的方法?
由于许多流水,我不想下载这些文件然后合并,因此仅考虑在AWS上直接解决方案。
我已经阅读了很多与此问题相关的内容,但找不到任何有用的答案。
答案 0 :(得分:0)
不幸的是,900 K(15分钟)是Kinesis等待缓冲时间的硬限制。
但是,如果您的数据移动缓慢,那么您可以每小时进行一次合并。
一种解决方法是使用安排为每小时调用一次的lambda函数,列出目标存储桶中的文件,进行读取,合并,然后将其写入“合并的”存储桶/前缀中然后删除合并的文件。
或者,您可以在写入文件时在S3消防水桶上调用lambda触发器。此触发器将读取该存储桶中的所有文件,然后合并它们。它的优点是您可以并行合并存储桶,而无需等待一个小时即可合并文件。
(您应该注意,S3在快速写入速度或列出大量文件时并不一致,因此,如果您的数据速度增加到每分钟要写入多个文件的程度,则这不是一个好的解决方案。)