应用程序内部流和数据泵 - 适用于 SQL 应用程序的 Amazon Kinesis Data Analytics 开发人员指南
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

对于新项目,建议您使用新的适用于 Apache Flink Studio 的托管服务,而不是使用适用于 SQL 应用程序的 Kinesis Data Analytics。Managed Service for Apache Flink Studio 不仅操作简单,还具有高级分析功能,使您能够在几分钟内构建复杂的流处理应用程序。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

应用程序内部流和数据泵

当您配置应用程序输入时,您需要将一个流式传输源映射到已创建的应用程序内部流。数据从流式传输源持续流动到应用程序内部流。应用程序内部流类似于可使用 SQL 语句进行查询的表,但是,它之所以称为流是因为它表示连续的数据流。

注意

不要将应用程序内部流与 Amazon Kinesis 数据流和 Kinesis Data Firehose 传输流混淆。应用程序内部流仅存在于 Amazon Kinesis Data Analytics 应用程序环境中。Kinesis 数据流和 Kinesis Data Firehose 传输流不依赖于您的应用程序而独立存在。您可以将它们配置为应用程序输入配置中的流式源,或者配置为输出配置中的一个目标。

您还可以根据需要创建更多的应用程序内部流来存储中间查询结果。创建应用程序内部流是一个两步过程。首先,创建应用程序内部流,然后将数据泵送到其中。例如,假设您应用程序的输入配置创建了名为 INPUTSTREAM 的应用程序内部流。在以下示例中,您将创建另一个流 (TEMPSTREAM),然后从 INPUTSTREAM 将数据泵送到其中。

  1. 按如下所示使用三列创建应用程序内部流 (TEMPSTREAM):

    CREATE OR REPLACE STREAM "TEMPSTREAM" ( "column1" BIGINT NOT NULL, "column2" INTEGER, "column3" VARCHAR(64));

    在引号内指定列名,输入时区分大小写。有关更多信息,请参阅 Amazon Kinesis Data Analytics SQL 参考中的标识符

  2. 使用数据泵将数据插入流。数据泵是连续运行的插入查询,它将数据从一个应用程序内部流插入另一个应用程序内部流。以下语句创建一个数据泵 (SAMPLEPUMP),然后通过从另一个流 (INPUTSTREAM) 选择记录,将数据插入 TEMPSTREAM

    CREATE OR REPLACE PUMP "SAMPLEPUMP" AS INSERT INTO "TEMPSTREAM" ("column1", "column2", "column3") SELECT STREAM inputcolumn1, inputcolumn2, inputcolumn3 FROM "INPUTSTREAM";

您可以使多个写入器插入一个应用程序内部流,可以从该流选择多个读取器。可以将应用程序内部流视为实施发布/订阅消息发送范式。在此范式中,数据行(包括创建时和接收时)可以通过一串关联的流式 SQL 语句进行处理、解释和转发,无需存储在传统的 RDBMS 中。

在创建应用程序内部流后,您可以执行普通 SQL 查询。

注意

查询流时,会使用基于行或基于时间的窗口绑定大多数 SQL 语句。有关更多信息,请参阅窗口式查询

您还可以联接流。有关联接流的示例,请参阅流数据操作:流联接