一般性问题
交互式分析能够实时对流数据进行探究。借助专属查询或程序,您可以从 Amazon MSK 或 Amazon Kinesis Data Streams 查看数据流,并将数据在这些流媒体中的活动情况可视化。例如,您可以查看在一段时间内计算平均值的实时指标的行为,并将经过整合的数据发送到您选择的目标。交互式分析还有助于流处理应用程序的迭代开发。您所搭建的查询将随着新数据的到来持续更新。有了 Kinesis Data Analytics Studio,您就可以部署这些查询以使其持续运行,同时启用自动扩展和持久状态备份。
使用 Apache Beam 创建 Kinesis Data Analytics 应用程序与开始使用 Apache Flink 非常相似。请遵照上述问题中的说明,并确保按照开发人员指南中的说明安装应用程序在 Apache Beam 上运行所需的任何组件。请注意,Kinesis Data Analytics 只有在 Apache Beam 上运行时才支持 Java SDK。
您可以从 Amazon Kinesis Data Analytics 控制台开始,然后创建一个新的 Studio 笔记本。等您开启了笔记本后,便可以在 Apache Zeppelin 中打开,从而迅速以 SQL、Python 或 Scala 语言写代码了。您可以通过使用内置集成的 Amazon Kinesis Data Streams、Amazon MSK 和 Amazon S3 的笔记本界面以及具有自定义连接器的各种其他源,以交互方式开发应用程序。您可以在 Flink SQL 和 Table API 中使用 Apache Flink 支持的所有运算符来执行数据流的临时查询,以及开发您的流处理应用程序。准备就绪后,只需点击几下,您就可以轻松地将代码提升为具有自动扩展和持久状态的流处理应用程序,并可持续运行。
是,使用 Apache Flink DataStream 连接器,适用于 Apache Flink 应用程序的 Amazon Kinesis Data Analytics 可以使用 AWS Glue 的一项无服务器功能 AWS Glue Schema Registry。您可以将 Apache Kafka/Amazon MSK 和 Amazon Kinesis Data Streams 作为接收器和源与适用于 Apache Flink 的 Amazon Kinesis Data Analytics 工作负载集成。访问架构注册表 用户文档开始使用并了解更多信息。
重要概念
管理应用程序
- 《Amazon Kinesis Data Analytics for Apache Flink 开发人员指南》中的监控 Kinesis Data Analytics。
- 《Amazon Kinesis Data Analytics Studio 开发人员指南》中的监控 Kinesis Data Analytics。
- 《Amazon Kinesis Data Analytics for SQL 开发人员指南》中的监控 Kinesis Data Analytics。
- 《Amazon Kinesis Data Analytics for Apache Flink 开发人员指南》中的授予权限。
- 《Amazon Kinesis Data Analytics Studio 开发人员指南》中的授予权限。
- 《Amazon Kinesis Data Analytics for SQL 开发人员指南》中的授予权限。
定价与计费
我们根据用于运行流应用程序的 Amazon Kinesis 处理单元 (KPU) 的数量,按小时收取费用。一个 KPU 表示一个流处理容量单元,由 1 个 vCPU 计算和 4GB 内存组成。Amazon Kinesis Data Analytics 会自动调整流式处理应用程序所需的 KPU 数量,因为内存和计算需求会因处理复杂性和处理流数据的吞吐量而异。
对于 Apache Flink 和 Apache Beam 应用程序,每个应用程序要为应用程序编排收取一个额外的 KPU 费用。Apache Flink 和 Apache Beam 应用程序会被收取运行应用程序存储和持久应用程序备份的费用。运行应用程序存储会应用于 Amazon Kinesis Data Analytics 中的状态处理功能,并按每月每 GB 收费。持久应用程序备份是可选项,按每月每 GB 收费,并为应用程序提供基于时间点恢复功能。
对于 Amazon Kinesis Data Analytics,在开发或交互模式下,您需要为应用程序编排所用的额外 KPU 付费,交互式开发也需要使用一个 KPU。您还需要为运营应用程序存储空间付费。对于持久应用程序备份,您无需承担费用。
构建 Apache Flink 应用程序
使用 Apache Flink 编写应用程序代码
DataStream <GameEvent> rawEvents = env.addSource(
New KinesisStreamSource(“input_events”));
DataStream <UserPerLevel> gameStream =
rawEvents.map(event - > new UserPerLevel(event.gameMetadata.gameId,
event.gameMetadata.levelId,event.userId));
gameStream.keyBy(event -> event.gameId)
.keyBy(1)
.window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
.apply(...) - > {...};
gameStream.addSink(new KinesisStreamSink("myGameStateStream"));
- 流数据源:Amazon Managed Streaming for Apache Kafka(Amazon MSK)、Amazon Kinesis Data Streams 目标位置或接收器:Amazon Kinesis Data Streams
- Amazon Kinesis Data Firehose、Amazon DynamoDB、Amazon Elasticsearch Service 和 Amazon S3(通过文件接收器集成)
Apache Flink 还包含其他 连接器,包括 Apache Kafka、Apache Casssandra 和 Elasticsearch 等。
可以。您可以使用 Kinesis Data Analytics Apache Flink 应用程序在 Amazon Kinesis Data Streams、Amazon MSK 和其他系统之间复制数据。我们的文档中提供的 示例说明了如何从一个 Amazon MSK 主题读取数据,然后写入另一个主题。
构建 Amazon Kinesis Data Analytics Studio 应用程序
问:如何开发应用程序?
您可以从 Amazon Kinesis Data Analytics Studio、Amazon Kinesis Data Streams 或 Amazon MSK 控制台开始,只需轻点几下鼠标启动一个无服务器笔记本,迅速查询数据流并开展交互式数据分析。
交互式数据分析:您可以使用 SQL、Python 或 Scala 等语言在笔记本中编写代码,以同您的流式数据交互,查询将在数秒内响应。您可以使用内置的可视化功能在您的笔记本内部探索数据并查看流式数据的实时见解,同时还能轻易地开发出由 Apache Flink 提供支持的流处理应用程序。
当您的代码已准备好作为生产应用程序运营时,只需轻轻一点,就能转化成流处理应用程序,每秒可处理数 GB 的数据,并且无需服务器。
流处理应用程序:当您准备好将代码推广进行生产时,只需点击几下鼠标即可构建您的代码。您可以在笔记本界面点击“作为流处理应用程序部署”或在 CLI 中发布一个单一指令,Studio 即会接手所有必要的基础设施管理活动,为您大规模运行流处理应用程序。您无需启用自动伸缩及持久性状态,就像 Amazon Kinesis Data Analytics for Apache Flink 应用程序一样。
问:应用程序代码是怎样的?
您可以借助 Apache Flink 的 Table API,利用您偏好的语言(如 SQL、Python 或 Scala)在笔记本中编写代码。Table API 是一种高度抽象化、关系化的 API,能够支持 SQL 能力的超集。它将提供诸多熟悉的运营功能,例如选择、筛选、加入、按条件分组、整合等,此外还有窗口化等流式特定概念。您可以使用 %<interpreter> 来指定需要在笔记本部分中使用的语言,在不同语言之间切换也十分简便。编译程序是 Apache Zeppelin 的插件功能,可以帮助开发人员为笔记本的各个部分指定语言或数据处理引擎。您还可以打造由用户定义的功能,并引用这些功能来提升代码的功能。
问:服务支持哪些 SQL 操作?
您可以执行 SQL 运营操作,例如扫描与筛选(SELECT、WHERE)、整合(GROUP BY、GROUP BY WINDOW、HAVING)、设置(UNION、UNIONALL、INTERSECT、IN、EXISTS)、排序(ORDER BY、LIMIT)、Joins(INNER、OUTER、Timed Window –BETWEEN、AND、加入时态表 – 一种随时跟踪变化的表格)、前 N 个、去重以及模式识别。其中某些查询功能,诸如 GROUP BY、OUTER JOIN 和 前 N 个均为流式数据的“结果更新”,意味着在处理流式数据时,这些结果将持续更新。此外,还支持 CREATE、ALTER 和 DROP 等其他 DDL 语句。如需了解有关查询和示例的完整列表,请参阅 https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/sql/queries.html。
问:服务能为 Python 和 Scala 提供哪些支持?
Apache Flink 的 Table API 能够采用 Python 语句和 Scala 表达通过语言整合为 Python 和 Scala 提供支持。其所支持的操作与 SQL 操作十分类似,包括选择、排序、分组、加入、筛选和窗口化。 我们此处的文档中包含操作和示例的完整列表。
问:支持哪些版本的 Apache Flink 和 Apache Zepplin?
要了解有关支持的 Apache Flink 版本的更多信息,请参阅 Amazon Kinesis Data Analytics 发行说明页面。此页面还包括 Kinesis Data Analytics 支持的 Apache Zeppelin、Apache Beam、Java、Python 和 AWS SDK 的版本。
问:Kinesis Data Analytics Studio 应用程序默认支持哪些集成?
- 数据来源:Amazon Managed Streaming for Apache Kafka (Amazon MSK)、Amazon Kinesis Data Streams、Amazon S3
- 目标位置,或 sink:Amazon MSK、Amazon Kinesis Data Streams 和 Amazon S3
问:是否支持自定义集成?
您可以采取额外几个步骤,并利用数行 Apache Flink 代码(Python、Scala 或 Java)来配置额外的整合功能,以借助包括目标位置在内的 Apache Flink 支持整合功能定义连接,这些功能包括 Amazon OpenSearch Service、Amazon ElastiCache for Redis、Amazon Aurora、Amazon Redshift、Amazon DynamoDB 和 Amazon Keyspaces 等等。当您创建或配置您的 Studio 应用程序时,您可以为这些自定义的连接器附加可执行文件。
问:我是该使用 Kinesis Data Analytics Studio 还是 Kinesis Data Analytics SQL 进行开发?
我们推荐您首先使用 Kinesis Data Analytics Studio,因为它能够提供更为完善的流处理体验,并且只需确切一次处理。Kinesis Data Analytics Studio 能够根据您所选择的语言(SQL、Python 及 Scala)提供流处理应用程序开发支持,扩展至 GB 每秒的处理规模,支持按小时甚至按天计算的长时间运行计算,在数秒内执行代码更新,处理多个输入流,并与包括 Amazon Kinesis Data Streams 和 Amazon MSK 在内的多种输入流共同工作。
打造 Kinesis Data Analytics SQL 应用程序
对于新项目,我们更推荐您使用全新的 Kinesis Data Analytics Studio,而不是适用于 SQL 应用程序的 Kinesis Data Analytics。Kinesis Data Analytics Studio 结合了各种易用的高级分析功能,助您在几分钟内打造出成熟而完善的流处理应用程序。
为 SQL 应用程序配置输入
编写 SQL 应用程序代码
- 在 INSERT 语句环境中,应始终使用 SELECT 语句。在选择行时,您可将结果插入另一应用程序内部流中。
- 在 Pump 环境中使用 INSERT 语句。
- 您可以使用 Pump 来使 INSERT 语句连贯并写入应用程序内部流中。
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";
在 SQL 应用程序中配置目标
与其他流处理解决方案进行比较
服务等级协议
问:Amazon Kinesis Data Analytics SLA 提供什么保障?
我们的 Amazon Kinesis Data Analytics SLA 保证 Amazon Kinesis Data Analytics 的月度正常运行时间百分比至少达到 99.9%。
问:怎样确定我是否有资格获得 SLA 服务抵扣?
对于您运行任务所在的可用区,如果同一个区域内有一个以上的可用区在任何月度账单周期内的月度正常运行时间百分比没有达到 99.9%,那么您就有资格获得 Amazon Kinesis Data Analytics SLA 规定的 Amazon Kinesis Data Analytics 服务抵扣。如需 SLA 的所有条款与条件的完整详细信息,以及如何提交索赔的详细信息,请参阅Amazon Kinesis SLA 详细信息页面。
Amazon Kinesis Data Analytics 入门

通过分步指南了解如何使用 Amazon Kinesis Data Analytics for SQL 或 Amazon Kinesis Data Analytics for Apache Flink。