许多用于无服务器实时分析的 AWS 参考架构建议通过 Kinesis Firehose 将处理后的数据从 Lambda 推送到 S3。
e.g.
https://aws.amazon.com/blogs/big-data/create-real-time-clickstream-sessions-and-run-analytics-with-amazon-kinesis-data-analytics-aws-glue-and-amazon-雅典娜/ https://aws.amazon.com/blogs/big-data/create-real-time-clickstream-sessions-and-run-analytics-with-amazon-kinesis-data-analytics-aws-glue-and-amazon-athena/
为什么我们不能直接将数据从 Lambda 推送到 S3?通过跳过中介 Kinesis Firehose 组件来避免复杂性和额外成本不是更好吗?通过Lambda直接将实时数据写入S3有什么问题吗?
主要是因为 Firehose 使您能够批量处理数据。它将例如仅将压缩后的 128MB 数据文件写入 S3。它将收集传入数据,直到达到阈值,将其写入 S3 并等待下一个数据。如果您让 lambda 直接写入 S3,那么您必须自己进行批处理,如果您只有无状态 lambda,这将非常困难。
话虽如此,这主要适用于您的数据由许多记录/行组成的情况。另一方面,如果您基本上处理的是 lambda 输出的 50MB 数据块,那么您可以/应该直接写入 S3,因为在您的情况下批处理可能不可行或无用。
您是否应该使用 Firehose 仅取决于您拥有的数据/吞吐量以及可能存在的要求。
将实时数据直接写入 S3 的一个问题是,如果您想要使用 Athena 查询它,如果您有数百万个几个字节大的文件而不是 100 个 10MB 大的文件,您将会遇到很多麻烦。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)