对于新项目,我们建议您使用新的 Kinesis Data Analytics 工作室,而不是 SQL 应用程序的 Kinesis Data Analytics。Kinesis Data Analytics Studio 将易用性与高级分析功能相结合,使您能够在几分钟内构建复杂的流处理应用程序。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 SQL 应用程序的Amazon Kinesis Data Analytics:工作原理
应用程序是Amazon Kinesis Data Analytics 中的主要资源,您可以在自己的账户中创建该资源。您可以使用Amazon Web Services Management Console或 Kinesis Data Analytics API 创建和管理应用程序。Kinesis Data Analytics 提供 API 操作来管理应用程序。有关 API 操作的列表,请参阅操作。
Kinesis Data Analytics 应用程序持续读取和处理流式数据。您可以使用 SQL 编写应用程序代码来处理传入的流数据并生成输出。然后,Kinesis Data Analytics 将输出写入配置的目的地。以下示意图说明典型的应用程序架构。
每个应用程序都有名称、描述、版本 ID 和状态。Amazon Kinesis Data Analytics 会在您首次创建应用程序时分配版本 ID。在您更新任何应用程序配置时,此版本 ID 会更新。例如,如果您添加输入配置、添加或删除参考数据源、添加或删除输出配置或更新应用程序代码,Kinesis Data Analytics 会更新当前应用程序版本 ID。Kinesis Data Analytics 还保留应用程序创建和上次更新的时间戳。
除了这些基本属性外,每个应用程序还包括:
-
输入-应用程序的流媒体源。您可以选择 Kinesis 数据流或 Kinesis Data Firehose 数据传输流。在输入配置中,您可以将流式传输源映射到应用程序内部输入流。应用程序内部流类似于可以对其执行
SELECT和INSERT SQL操作的连续更新表。在您的应用程序代码中,可以创建其他应用程序内部流来存储中间查询结果。您可以选择将单个流式传输源分区到多个应用程序内部输入流以提高吞吐量。有关更多信息,请参阅 Limits 和 配置应用程序输入。
Amazon Kinesis Data Analytics 在每个应用程序流中提供一个时间戳列,名为时间戳和 ROWTIME 列。您可以在基于时间的窗口式查询中使用该列。有关更多信息,请参阅窗口式查询:
您可以选择配置引用数据源,以便丰富您在应用程序中的输入数据流。这会生成应用程序内部引用表。您必须将引用数据存储为 S3 存储桶中的对象。应用程序启动时,Amazon Kinesis Data Analytics 读取Amazon S3 对象并创建应用程序内部表。有关更多信息,请参阅配置应用程序输入:
-
应用程序代码-处理输入和生成输出的一系列 SQL 语句。您可以针对应用程序内部流和引用表编写 SQL 语句。您还可以编写 JOIN 查询以组合来自这两个源的数据。
有关 Kinesis Data Analytics 支持的 SQL 语言元素的信息,请参阅 Amazon Kinesis Data Analytics SQL 参考资料。
在采用最简单的形式时,应用程序代码可以是单个 SQL 语句,它从流式输入中选择并将结果插入到流式输出中。它还可以是一系列 SQL 语句,将一个 SQL 语句的输出馈送到下一个 SQL 语句的输入。此外,您可以编写应用程序代码以将输入流拆分为多个流。然后,您可以应用其他查询来处理这些流。有关更多信息,请参阅应用程序代码:
-
输出-在应用程序代码中,查询结果转到应用程序内部流。在您的应用程序代码中,您可以创建一个或多个应用程序内部流保存中间结果。然后,您可以选择配置应用程序输出以在应用程序内部流中永久保存数据,而这些应用程序内部流将应用程序输出(也称为应用程序内部输出流)保存到外部目标中。外部目标可以是 Kinesis Data Firehose 传输流。请注意有关这两种目标的以下信息:
-
你可以配置 Kinesis Data Firehose 传输流,将结果写入Amazon S3、Amazon Redshift ft 或亚马逊 OpenSearch OpenSearch 服务(服务)。
-
您也可以将应用程序输出写入自定义目的地,而不是 Amazon S3 或 Amazon Redshift。为此,在输出配置中将 Kinesis 数据流标识为目标。然后,您配置Amazon Lambda为轮询直播并调用您的 Lambda 函数。您的 Lambda 函数代码将流式数据作为输入接收流式数据。在您的 Lambda 函数代码中,您可以将传入的数据写入您的自定义目的地。有关更多信息,请参阅 Amazon Kinesis Data Analytics。Amazon Lambda
有关更多信息,请参阅配置应用程序输出:
-
此外,请注意以下情况:
-
Amazon Kinesis Data Analytics 需要权限才能从流媒体源读取记录并将应用程序输出写入外部目的地。您可以使用 IAM 角色授予这些权限。
-
Kinesis Data Analytics 自动为每个应用程序提供应用程序内错误流。如果您的应用程序在处理某些记录时出现问题(例如由于类型不匹配或者到达延迟),记录将写入错误流。您可以将应用程序输出配置为指示 Kinesis Data Analytics 将错误流数据保存到外部目标以进行进一步评估。有关更多信息,请参阅错误处理:
-
Amazon Kinesis Data Analytics 可确保将您的应用程序输出记录写入配置的目的地。它“至少一次”使用处理和传输模型,即使在您遇到应用程序中断的情况下也是如此。有关更多信息,请参阅 将应用程序输出永久保存到外部目标的传输模型。