问:Kinesis Data Analytics for SQL 与适用于 Apache Flink Studio 的亚马逊托管服务和适用于 Apache Flink 的亚马逊托管服务有何区别? 我该使用哪一个?

我们不建议客户使用 Kinesis Data Analytics for SQL 构建新应用程序。我们建议客户使用适用于 Apache Flink Studio 的亚马逊托管服务或者适用于 Apache Flink 的亚马逊托管服务构建新应用程序。此外,我们还建议拥有 Kinesis Data Analytics for SQL 的客户迁移到其他两款产品。您可以使用开发人员指南中的“迁移示例”来帮助完成此任务。

问:如何迁移到适用于 Apache Flink Studio 的亚马逊托管服务?

您可以在此处查找代码示例和架构库。这些示例涵盖了常见查询,例如窗口和聚合、转换日期时间值、联接、警报和错误等。此外,我们还创建了示例架构,可供您使用。 

为 SQL 应用程序配置输入

问:Kinesis Data Analytics SQL 应用程序支持哪些输入?

Kinesis Data Analytics 中的 SQL 应用程序支持两类输入:流数据源和引用数据源。流数据源是连续生成的数据,被读入应用程序以供处理。引用数据源是静态数据,应用程序用它来丰富从流式传输源传入的数据。每个应用程序最多只能有一个流数据源,最多只能有一个引用数据源。应用程序不断从流数据源(包括 Amazon Kinesis Data Streams 或 Amazon Kinesis Data Firehose)读取和处理新数据。应用程序会完整读取包括 Amazon S3 在内的引用数据源,以用于通过 SQL JOIN 丰富流数据源。

问:什么是引用数据源?

引用数据源是静态数据,应用程序用它来丰富从流式传输源传入的数据。您可以将引用数据作为对象存储在 S3 存储桶中。当 SQL 应用程序启动时,Kinesis Data Analytics 读取 S3 对象并创建一个应用程序内 SQL 表来存储引用数据。然后,您的应用程序代码可以将其与应用程序内流结合在一起。您可以通过调用 UpdateApplication API 更新 SQL 表中的数据。

问:如何在 SQL 应用程序中设置流数据源?

流数据源可以是 Amazon Kinesis 数据流或 Amazon Kinesis Data Firehose 交付流。Kinesis Data Analytics SQL 应用程序会不断地从流数据源读取实时到达的新数据。可以通过应用程序内流在 SQL 代码中访问数据。应用程序内流的作用类似于 SQL 表,因为您可以创建、插入和从中进行选择。但是,不同之处在于应用程序内流使用来自流数据源的新数据不断进行更新。

您可以使用亚马逊云科技管理控制台添加流数据源。您可以在《Kinesis Data Analytics for SQL 开发人员指南》的配置应用程序输入部分中,了解有关数据源的更多信息。

问:如何在 SQL 应用程序中设置引用数据源?

引用数据源可以是 Amazon S3 对象。Kinesis Data Analytics SQL 应用程序开始运行时会完整读取 S3 对象。可以通过表在 SQL 代码中访问数据。使用引用数据源的最常见使用案例是使用 SQL JOIN 丰富来自流数据源的数据。

使用 Amazon CLI,您可以通过指定 S3 存储桶、对象、IAM 角色和关联的架构来添加引用数据源。Kinesis Data Analytics 在您启动该应用程序时加载此数据,并在每次进行更新 API 调用时重新加载。

问:SQL 应用程序支持哪些数据格式?

Kinesis Data Analytics 中的 SQL 应用程序可以检测架构,并使用 DiscoverInputSchema API 自动解析 UTF-8 编码的 JSON 和 CSV 记录。此架构将应用于从流中读取的数据,作为插入到应用程序内流中的一部分。

对于不使用分隔符、使用不同于 CSV 的分隔符的其他 UTF-8 编码的数据,或者在发现 API 未完全发现该架构的情况下,您可以使用交互式架构编辑器定义架构,或使用字符串操作功能来构造您的数据。有关更多信息,请参阅《Amazon Kinesis Data Analytics for SQL 开发人员指南》中的使用架构发现功能和相关编辑。 

问:我的输入流如何呈现给我的 SQL 代码?

Kinesis Data Analytics for SQL 应用您指定的架构,并将您的数据插入到一个或多个应用程序内流用于流式传输源,插入到单个 SQL 表中用于引用源。应用程序内流的默认数量是可以满足大多数使用案例需求的数量。如果您发现应用程序未与 CloudWatch 指标 MillisBehindLatest 定义的源流中的最新数据保持同步,则应增加此值。所需的应用程序内流的数量同时受源流的吞吐量和查询复杂性的影响。用于指定映射到源流的应用程序内流数量的参数称为输入并行性。 

编写用于 SQL 应用程序的应用程序代码

应用程序代码是一系列处理输入并产生输出的 SQL 语句。这些 SQL 语句对应用程序内流和引用表进行操作。应用程序内流就如同一个持续更新的表,您可以在该表上执行 SELECT 和 INSERT SQL 操作。您配置的源和目标通过应用程序内流呈现给 SQL 代码。您还可以创建其他应用程序内流来存储中间查询结果。 

您可以使用以下模式来处理应用程序内流:

  • 始终在 INSERT 语句的上下文中使用 SELECT 语句。当您选择行时,您将结果插入另一个应用程序内流中。
  • 在 Pump 的上下文中使用 INSERT 语句。您使用 Pump 使 INSERT 语句连续,并写入应用程序内流。
  • 您使用一个 Pump 将应用程序内流连接在一起,从一个应用程序内流中选择,然后插入另一个应用程序内流。

以下 SQL 代码提供了一个简单有效的应用程序:  

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
    ticker_symbol VARCHAR(4),
    change DOUBLE,
    price DOUBLE);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
  INSERT INTO "DESTINATION_SQL_STREAM"    
    SELECT STREAM ticker_symbol, change, price    
    FROM "SOURCE_SQL_STREAM_001";

有关应用程序代码的更多信息,请参阅《Amazon Kinesis Data Analytics for SQL 开发人员指南》中的应用程序代码。 

问:Kinesis Data Analytics 如何帮助我编写 SQL 代码?

Kinesis Data Analytics 包含一个分析模板库,用于常见使用案例,包括流过滤器、滚动时间窗口和异常检测。您可以从亚马逊云科技管理控制台中的 SQL 编辑器访问这些模板。在您创建应用程序并导航到 SQL 编辑器后,模板将出现在控制台的左上角。

问:如何在 Kinesis Data Analytics 中执行实时异常检测?

Kinesis Data Analytics 包含针对几种高级分析(包括一种用于异常检测)的预先构建的 SQL 函数。您只需从 SQL 代码中调用此函数即可实时检测异常。Kinesis Data Analytics 使用 Random Cut Forest 算法来实现异常检测。 

在 SQL 应用程序中配置目标

问:支持哪些目标?

Kinesis Data Analytics for SQL 最多支持每个应用程序三个目标。您可以将 SQL 结果持久保存到 Amazon S3、Amazon Redshift 和 Amazon Elasticsearch Service(通过 Amazon Kinesis Data Firehose),以及 Amazon Kinesis Data Streams。通过将 SQL 结果发送到 Amazon Kinesis Data Streams,并利用其与 Amazon Lambda 的集成,发送到您选择的目标,您可以写入 Kinesis Data Analytics 不直接支持的目标。

问:如何设置目标?

在您的应用程序代码中,将 SQL 语句的输出写入一个或多个应用程序内流。或者,您可以将输出配置添加到应用程序中,以便将写入特定应用程序内流的所有内容持续保存到最多四个外部目标。这些外部目标可以是 Amazon S3 存储桶、Amazon Redshift 表、Amazon Elasticsearch Service 域(通过 Amazon Kinesis Data Firehose)和 Amazon Kinesis 数据流。每个应用程序最多支持四个目标,可以是上述目标的任意组合。有关更多信息,请参阅《Amazon Kinesis Data Analytics for SQL 开发人员指南》中的“配置输出流”。

问:我的首选目标不受直接支持。我可以如何将 SQL 结果发送到此目标?

您可以使用 Amazon Lambda 写入使用 Kinesis Data Analytics for SQL 应用程序不直接支持的目标。我们建议您将结果写入 Amazon Kinesis 数据流,然后使用 Amazon Lambda 读取处理的结果并将其发送到所选的目标。有关更多信息,请参阅示例:《Amazon Kinesis Data Analytics for SQL 开发人员指南》中的 Amazon Lambda 集成。或者,您可以使用 Kinesis Data Firehose 传输流将数据加载到 Amazon S3 中,然后触发 Amazon Lambda 函数来读取此数据并将其发送到所选的目标。

问:Kinesis Data Analytics 提供了哪种传输模式?

Kinesis Data Analytics 中的 SQL 应用程序使用“至少一次”传输模式将应用程序输出到配置的目标。Kinesis Data Analytics 应用程序采用内部检查点,这是将输出记录传输到目标且不会产生数据丢失的时间点。此服务根据需要使用检查点,以确保至少传输一次应用程序输出到配置的目标。有关传输模式的更多信息,请参阅《Amazon Kinesis Data Analytics for SQL 开发人员指南》中的配置应用程序输出。 

开始使用亚马逊云科技免费构建

开始使用亚马逊云科技免费构建

关闭
热线

热线

1010 0766
由光环新网运营的
北京区域
1010 0966
由西云数据运营的
宁夏区域