View a markdown version of this page

场景 3:为数据洞察流程准备点击流数据 - AWS 上的流数据解决方案(使用 Amazon Kinesis)

场景 3:为数据洞察流程准备点击流数据

Fast Sneakers 是一家专注于时尚运动鞋的时尚精品店。任何一双鞋的价格都可能会因为库存和潮流趋势的变化而上涨或下降,例如昨晚在电视上发现哪位名人或体育明星穿着某名牌的运动鞋。对于 Fast Sneakers 来说,跟踪和分析这些潮流趋势非常重要,以便可以最大限度地提高收益额。

Fast Sneakers 不希望在项目中引入维护新基础设施方面的额外开销。他们希望能够将开发工作分给适当的各方,其中,数据工程师可以专注于数据转换工作,而他们的数据科学家则可以独立处理其机器学习 (ML) 功能。

为了快速做出响应并根据需求自动调整价格,Fast Sneakers 对重大事件(如点击兴趣和购买数据)进行流式处理,转换和增强事件数据,并将数据提供给机器学习 (ML) 模型。他们的机器学习 (ML) 模型能够确定是否需要调整价格。这使 Fast Sneakers 可以自动修改其定价,以最大限度地提高其产品的利润。

Fast Sneakers 实时价格调整

Fast Sneakers 实时价格调整

此架构图显示了利用 Kinesis Data Streams、AWS Glue 和 DynamoDB Streams 创建的 Fast Sneakers 实时流式处理解决方案。通过利用这些服务,他们可以获得具备弹性且可靠的解决方案,而无需花费时间来设置和维护支持基础设施。他们可以通过专注于流提取、转换、加载 (ETL) 任务和机器学习模型,从而将时间花在为公司带来价值的事情上。

为了更好地了解其工作负载中使用的架构和技术,以下是所用服务的一些详细信息。

AWS Glue 和 AWS Glue 流式处理

AWS Glue 是一项完全托管式 ETL 服务,您可以用来登记、清理和丰富数据,并可以在数据存储之间可靠地移动数据。借助 AWS Glue,您可以显著降低创建 ETL 任务所花的成本、复杂性和时间。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 在 Apache Spark 无服务器环境中运行您的 ETL 任务。AWS Glue 在用其自己的服务账户预置和管理的虚拟资源上运行这些任务。除了能够运行基于 Apache Spark 的任务之外,AWS Glue 还可以通过 DynamicFrames 在 Spark 之上提供更高级别的功能。

DynamicFrames 是支持嵌套数据(如结构和数组)的分布式表。每条记录都是自描述的,旨在实现半结构化数据的架构灵活性。DynamicFrame 中的记录既包含数据,也包含描述数据的架构。ETL 脚本中同时支持 Apache Spark DataFramesDynamicFrames,您可以来回转换它们。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 是一种键值和文档数据库,可在任何规模下提供延迟不到十毫秒的性能。它是一个完全托管式、多区域、多活动的持久数据库,具有适用于 Internet 规模应用程序的内置安全性、备份和恢复以及内存中缓存。DynamoDB 每天可处理超过十万亿个请求,并可支持每秒超过 2000 万个请求的峰值。

DynamoDB Streams 的更改数据捕获

DynamoDB 流是一种有关 DynamoDB 表中的项目更改的有序信息流。当您对表启用流时,DynamoDB 将捕获有关对表中的数据项目进行的每项修改的信息。DynamoDB 在 AWS Lambda 上运行,因此您可以创建触发器 - 自动响应 DynamoDB 流中的事件的代码片段。利用触发器,您可以创建应对 DynamoDB 表中的数据修改的应用程序。

当您对表启用流时,您可以将流 Amazon Resource Name (ARN) 与您编写的 Lambda 函数关联起来。在修改表中的项目之后,表的流中都将出现一条新记录。AWS Lambda 将轮询流并在检测到新的流记录时同步调用 Lambda 函数。

Amazon SageMaker 和 Amazon SageMaker 服务终端节点

Amazon SageMaker 是一个完全托管式平台,使开发人员和数据科学家能够以任何规模快速构建、训练和部署机器学习 (ML) 模型。SageMaker 包含多个模块,这些模块可用于共同或单独构建、训练以及部署机器学习 (ML) 模型。借助 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 和 DynamicFramesFast 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) 使他们的网站能够进行完全自动的实时价格调整,从而最大限度地利用产品库存。这为他们的业务带来了最大的价值,同时避免了创建和维护大数据平台的需要。