适用于 SQL 应用程序的 Amazon Kinesis Data Analytics :工作方式 - Amazon Kinesis Data Analytics for SQL 应用程序开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

适用于 SQL 应用程序的 Amazon Kinesis Data Analytics :工作方式

应用程序 是可以在您的账户中创建的主要 Amazon Kinesis Data Analytics 资源。您可以使用 AWS 管理控制台或 Kinesis Data Analytics API 创建和管理应用程序。Kinesis Data Analytics 提供 API 操作以管理应用程序。有关 API 操作的列表,请参阅Actions

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 传输流以作为流式传输源。在输入配置中,您可以将流式传输源映射到应用程序内部输入流。应用程序内部流类似于可以对其执行 SELECTINSERT 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 数据流。请注意有关这两种目标的以下信息:

    • 您可以配置 Kinesis Data Firehose 传输流以将结果写入到 Amazon S3、Amazon Redshift 或 Amazon Elasticsearch Service (Amazon ES) 中。

       

    • 您也可以将应用程序输出写入到自定义目标,而不是 Amazon S3 或 Amazon Redshift。为此,请指定一个 Kinesis 数据流以作为输出配置中的目标。然后,您配置 AWS Lambda 以轮询流并调用 Lambda 函数。您的 Lambda 函数代码接收流数据以作为输入。在您的 Lambda 函数代码中,您可以将传入数据写入到自定义目标中。有关更多信息,请参阅将 AWS Lambda 与 Amazon Kinesis Data Analytics 结合使用

    有关更多信息,请参阅 配置应用程序输出。)

此外,请注意以下情况:

  • Amazon Kinesis Data Analytics 需要具有相应的权限,以从流式传输源中读取记录并将应用程序输出写入到外部目标中。您可以使用 IAM 角色以授予这些权限。

     

  • Kinesis Data Analytics 自动为每个应用程序提供应用程序内部错误流。如果您的应用程序在处理某些记录时出现问题(例如由于类型不匹配或者到达延迟),记录将写入错误流。您可以配置应用程序输出,以指示 Kinesis Data Analytics 将错误流数据永久保存到外部目标以进行进一步的评估。有关更多信息,请参阅 错误处理。)

     

  • Amazon Kinesis Data Analytics 确保您的应用程序输出记录写入到配置的目标中。它“至少一次”使用处理和传输模型,即使在您遇到应用程序中断的情况下也是如此。有关更多信息,请参阅 将应用程序输出永久保存到外部目标的传输模型。)