我有一个Streaming Data用例,对于插入Kinesis Stream的每条记录,我想根据过去24小时的记录计算一个值。
现在,Kinesis Analytics似乎很适合这个法案。我可以使用WINDOW
和RANGE INTERVAL '1' DAY PRECEDING
来获取我的聚合。我的Kinesis Stream将保留26小时的记录。
我的冲突来自Best Practices文档。
具体做法是:
在您的SQL语句中,我们建议您不要指定超过一小时的基于时间的窗口,原因如下:
如果需要重新启动应用程序,无论是因为您更新了应用程序还是因为Amazon Kinesis Data Analytics内部原因,必须再次从流数据源中读取窗口中包含的所有数据。这需要一段时间才能让Amazon Kinesis Data Analytics为该窗口发出输出。
Amazon Kinesis Data Analytics必须维护与应用程序状态相关的所有内容,包括相关数据。这将消耗重要的Amazon Kinesis数据分析处理单元。
我想确定我理解这种后果。
说我继续我的计划并使用Kinesis Analytics实现这一点。然后无论出于何种原因,我的Kinesis Analytics应用程序都必须重新启动。对于上下文,我的应用程序每天处理大约100万条记录,每条记录大约550字节。
如果我的Kinesis Analytics应用程序重新启动,我将会处理什么,因为我会忽略此建议:
我们建议您不要指定超过一小时的基于时间的窗口
我还考虑过跳过Kinesis Analytics并将我的行放入RDS(postgres - 单一部署)并触发lambda来运行我的计算或使用Redis做一些事情(仍在探索这些后果)。