有很多关于AWS Firehose将数据存储到S3桶并同时传递给某些处理应用程序的示例(如上图所示)。
但是,我找不到任何关于在处理应用程序崩溃时从s3桶中回放此数据的良好实践。我们需要向其提供历史数据,这些数据已经不在Firehose中,但我们在s3中拥有它。
我可以考虑使用Firehose或Lambda进行重播,但是:
- Kinesis Firehose无法从桶中消耗
- Lambda将需要反序列化.parquet文件才能将其发送到Firehose或Kinesis Data Stream。我对这种隐式反序列化感到困惑,因为Firehose明确地进行了序列化。
或者也许还有其他方式可以将数据从s3放回流中,我完全错过了吗?
编辑:而且如果我们运行lambda将记录推送到流中,可能需要运行超过15分钟。因此,另一种选择是运行在单独EC2实例上的脚本。但是,从s3中提取数据的这些方法看起来比使用Firehose存储要复杂得多,这使我认为应该有一种更简单的方法。