应用程序内部流和数据泵 - 适用于 Amazon Kinesis Data Analytics·for·SQL 应用程序开发人员指南

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

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

应用程序内部流和数据泵

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

注意

不要将应用程序内流与 Amazon Kinesis 数据流和 Firehose 传输流混为一谈。应用程序内部流仅存在于 Amazon Kinesis Data Analytics 应用程序环境中。Kinesis 数据流和 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 语句。有关更多信息,请参阅窗口式查询

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