amazon-web-services - 在近实时分析中,为什么 Lambda-->Firehose-->S3 优于 Lambda-->S3?

标签 amazon-web-services amazon-s3 aws-lambda streaming amazon-kinesis-firehose

许多用于无服务器实时分析的 AWS 引用架构建议通过 Kinesis Firehose 将处理过的数据从 Lambda 推送到 S3。
例如
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 个大小为 10 个 MB 的文件,您会遇到很多麻烦。

关于amazon-web-services - 在近实时分析中,为什么 Lambda-->Firehose-->S3 优于 Lambda-->S3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65458856/

相关文章:

apache-spark - 在写入 s3 时在 Spark 2.1.0 中设置 spark.speculation

amazon-web-services - AWS Lambda 无权执行权限中列出的操作

amazon-web-services - AWS Glue 的 CI/CD 管道

amazon-s3 - Amazon S3,存储大量文件(数百万和许多 TB 的数据)

amazon-s3 - AWS SDK Java 版本 2 - 是否有与版本 1 中的 dosObjectExist() 等效的版本?

python - 无法在 AWS Lambda 上使用请求模块

amazon-web-services - 在 Lambda 函数中关闭 DAX 客户端

amazon-web-services - AWS Elastic Beanstalk 日志轮换

amazon-web-services - ls : cannot open directory '.' : Permission denied

amazon-web-services - 如何在 AWS Lambda 中使用 pdfkit?