场景 3:为数据洞察流程准备点击流数据
Fast Sneakers 是一家专注于时尚运动鞋的时尚精品店。任何一双鞋的价格都可能会因为库存和潮流趋势的变化而上涨或下降,例如昨晚在电视上发现哪位名人或体育明星穿着某名牌的运动鞋。对于 Fast Sneakers 来说,跟踪和分析这些潮流趋势非常重要,以便可以最大限度地提高收益额。
Fast Sneakers 不希望在项目中引入维护新基础设施方面的额外开销。他们希望能够将开发工作分给适当的各方,其中,数据工程师可以专注于数据转换工作,而他们的数据科学家则可以独立处理其机器学习 (ML) 功能。
为了快速做出响应并根据需求自动调整价格,Fast Sneakers 对重大事件(如点击兴趣和购买数据)进行流式处理,转换和增强事件数据,并将数据提供给机器学习 (ML) 模型。他们的机器学习 (ML) 模型能够确定是否需要调整价格。这使 Fast Sneakers 可以自动修改其定价,以最大限度地提高其产品的利润。
Fast Sneakers 实时价格调整
此架构图显示了利用 Kinesis Data Streams、AWS Glue 和 DynamoDB Streams 创建的 Fast Sneakers 实时流式处理解决方案。通过利用这些服务,他们可以获得具备弹性且可靠的解决方案,而无需花费时间来设置和维护支持基础设施。他们可以通过专注于流提取、转换、加载 (ETL) 任务和机器学习模型,从而将时间花在为公司带来价值的事情上。
为了更好地了解其工作负载中使用的架构和技术,以下是所用服务的一些详细信息。
AWS Glue 和 AWS Glue 流式处理
AWS Glue
利用 AWS Glue,您可以使用 AWS Glue 流式处理 ETL 任务创建使用者应用程序。这使您能够利用 Apache Spark 和其他基于 Spark 的模块写入来使用和处理事件数据。本文档的下一部分将更深入地介绍这一场景。
AWS Glue Data Catalog
AWS Glue Data Catalog 包含对以下数据的引用:这些数据在 AWS Glue 中用作 ETL 任务的源和目标。AWS Glue Data Catalog 是数据的位置、架构和运行时指标的索引。您可以使用数据目录中的信息来创建和监控您的 ETL 任务。数据目录中的信息将存储为元数据表,其中每个表指定单一数据存储。通过设置爬网程序,您可以自动评估多种类型的数据存储(包括 DynamoDB、S3 和 Java 数据库连接 (JDBC) 连接的存储),提取元数据和架构,然后在 AWS Glue Data Catalog 中创建表定义。
要在 AWS Glue 流式处理 ETL 任务中使用 Amazon Kinesis Data Streams,最佳实践是在 AWS Glue Data Catalog 数据库的表中定义流。您可以使用 Kinesis 流定义源于流的表,Kinesis 流是支持的多种格式之一(CSV、JSON、ORC、Parquet、Avro 或使用 Grok 的客户格式)。您可以手动输入架构,也可以将此步骤留给 AWS Glue 任务以在任务运行时期间确定。
AWS Glue 流式处理 ETL 任务
AWS Glue
DynamicFrames 是支持嵌套数据(如结构和数组)的分布式表。每条记录都是自描述的,旨在实现半结构化数据的架构灵活性。DynamicFrame 中的记录既包含数据,也包含描述数据的架构。ETL 脚本中同时支持 Apache Spark DataFrames 和 DynamicFrames,您可以来回转换它们。DynamicFrames 提供了一组用于数据清理和 ETL 的高级转换。
通过在 AWS Glue 任务中使用 Spark Streaming,您可以创建持续运行的流式处理 ETL 任务,并使用来自 Amazon Kinesis Data Streams、Apache Kafka 和 Amazon MSK 等流式处理源的数据。这些任务可以清理、合并和转换数据,然后将结果加载到存储(包括 Amazon S3、Amazon DynamoDB 或 JDBC 数据存储)中。
原定设置情况下,AWS Glue 在 100 秒的时段内处理和写出数据。这可以实现数据的高效处理,并允许对在预计时间之后到达的数据执行聚合。您可以通过调整窗口大小来配置窗口大小,以适应响应速度与聚合的准确性。AWS Glue 式处理流任务使用检查点来跟踪已从 Kinesis Data Streams 中读取的数据。有关在 AWS Glue 中创建流式处理 ETL 任务的演练,请参阅在 AWS Glue 中添加流式处理 ETL 任务。
Amazon DynamoDB
Amazon DynamoDB
DynamoDB Streams 的更改数据捕获
DynamoDB 流是一种有关 DynamoDB 表中的项目更改的有序信息流。当您对表启用流时,DynamoDB 将捕获有关对表中的数据项目进行的每项修改的信息。DynamoDB 在 AWS Lambda 上运行,因此您可以创建触发器 - 自动响应 DynamoDB 流中的事件的代码片段。利用触发器,您可以创建应对 DynamoDB 表中的数据修改的应用程序。
当您对表启用流时,您可以将流 Amazon Resource Name (ARN) 与您编写的 Lambda 函数关联起来。在修改表中的项目之后,表的流中都将出现一条新记录。AWS Lambda 将轮询流并在检测到新的流记录时同步调用 Lambda 函数。
Amazon SageMaker 和 Amazon SageMaker 服务终端节点
Amazon SageMaker
通过利用 AWS 软件开发工具包,您可以调用 SageMaker 终端节点来传递内容类型信息及内容,然后根据传递的数据接收实时预测。这样,您就能够将机器学习 (ML) 模型的设计和开发与对推理的结果执行操作的代码分开。
这使数据科学家能够专注于机器学习 (ML),而使用机器学习 (ML) 模型的开发人员可以专注于如何在代码中使用此模型。有关如何在 SageMaker 中调用终端节点的更多信息,请参阅 Amazon SageMaker API 参考中的 InvokeEnpoint。
实时推理数据洞察
前面的架构图显示,Fast Sneakers 的现有 Web 应用程序添加了包含点击流事件的 Kinesis 数据流,该数据流提供来自网站的流量和事件数据。产品目录(包含分类、产品属性和定价等信息)和订单表(包含已订购商品、账单、配送等数据)是单独的 DynamoDB 表。数据流源和相应的 DynamoDB 表在 AWS Glue Data Catalog 中定义了元数据和架构,供 AWS Glue 流式处理 ETL 任务使用。
通过在 AWS Glue 流式处理 ETL 任务中利用 Apache Spark、Spark Streaming 和 DynamicFrames,Fast Sneakers 能够从任一数据流中提取数据并进行转换,同时合并来自产品表和订单表的数据。利用来自此转换的水合数据,用于从中获取推理结果的数据集将提交到 DynamoDB 表。
该表的 DynamoDB 流会为写入的每条新记录触发一个 Lambda 函数。Lambda 函数使用 AWS 软件开发工具包将之前转换的记录提交到 SageMaker 终端节点,以推理产品需要进行怎样的价格调整(如果有的话)。如果机器学习 (ML) 模型确定需要对价格进行调整,则 Lambda 函数会将价格更改写入目录 DynamoDB 表中的产品。
总结
Amazon Kinesis Data Streams 可让您轻松地收集、处理和分析实时流数据,以便您及时获得洞察并对新信息快速做出响应。与 AWS Glue 无服务器数据集成服务相结合,您可以创建实时事件流应用程序,为机器学习 (ML) 准备和合并数据。
由于 Kinesis Data Streams 和 AWS Glue 服务都是完全托管的,因此 AWS 消除了为大数据平台管理基础设施的无差别繁重工作,让您专注于基于数据生成数据洞察。
Fast Sneakers 可以利用实时事件处理和机器学习 (ML) 使他们的网站能够进行完全自动的实时价格调整,从而最大限度地利用产品库存。这为他们的业务带来了最大的价值,同时避免了创建和维护大数据平台的需要。