只需单击一下,即可使用适用于 Apache Flink 的亚马逊托管服务蓝图构建端到端流管道。了解详情。
一般性问题
交互式分析可帮助您实时探索流数据。借助专属查询或程序,您可以从 Amazon MSK 或 Amazon Kinesis Data Streams 查看数据流,并将数据在这些流中的活动情况可视化。例如,您可以查看在一个时间窗口内计算平均值的实时指标的行为,并将经过整合的数据发送到您选择的目标。交互式分析还有助于流处理应用程序的迭代开发。您所搭建的查询将随着新数据的到来持续更新。借助适用于 Apache Flink 的亚马逊托管服务,您可以部署这些查询以使其持续运行,同时启用自动扩缩和持久状态备份。
开始使用
适用于 Apache Flink 的亚马逊托管服务可对应用程序进行弹性扩展,以适应源流的数据吞吐量和大多数情况下的查询复杂性。有关 Apache Flink 应用程序服务限制的详细信息,请查看《适用于 Apache Flink 的亚马逊托管服务开发人员指南》中的“限制”部分。
是,通过使用 Apache Flink DataStream 连接器,适用于 Apache Flink 应用程序的亚马逊托管服务可以使用 AWS Glue Schema Registry,这是 AWS Glue 的一项无服务器功能。您可以将 Apache Kafka/Amazon MSK 和 Amazon Kinesis Data Streams 作为接收器和源与适用于 Apache Flink 的亚马逊托管服务工作负载集成。请访问 《AWS Glue Schema Registry 开发人员指南》以开始使用并了解更多信息。
重要概念
- 输入:输入是应用程序的串流源。在输入配置中,您需要将串流源映射到数据流。数据从您的数据来源流入您的数据流。您可以使用应用程序代码处理来自这些数据流的数据,然后将处理后的数据发送到后续的数据流或目的地。您可以在 Apache Flink 应用程序和 Studio 笔记本的应用程序代码中添加输入,也可以通过适用于 Apache Flink 的亚马逊托管服务应用程序的 API 添加输入。
- 应用程序代码:应用程序代码是一系列用于处理输入并生成输出的 Apache Flink 运算符。最简单的的应用程序代码可以是单个 Apache Flink 运算符,它从与串流源关联的数据流中读取数据,然后写入与输出关联的另一个数据流。对于 Studio 笔记本,这可以是一个简单的 Flink SQL 选择查询,结果将显示在笔记本的上下文中。您可以使用适用于 Apache Flink 的亚马逊托管服务应用程序或 Studio 笔记本支持的语言为其编写 Apache Flink 代码。
- 输出:然后,您可以选择配置应用程序输出以将数据保存到外部目标。您可以将这些输出添加到适用于 Apache Flink 的亚马逊托管服务应用程序和 Studio 笔记本的应用程序代码中。
问:支持何种应用程序代码?
管理应用程序
- 《适用于 Apache Flink 的亚马逊托管服务开发人员指南》中的监控适用于 Apache Flink 的亚马逊托管服务。
- 《适用于 Apache Flink Studio 的亚马逊托管服务开发人员指南》中的监控适用于 Apache Flink 的亚马逊托管服务。
问:如何管理和控制对我的适用于 Apache Flink 应用程序的亚马逊托管服务的访问权限?
问:适用于 Apache Flink 的亚马逊托管服务如何扩展我的应用程序?
适用于 Apache Flink 的亚马逊托管服务可对应用程序进行弹性扩展,以适应源流的数据吞吐量和大多数情况下的查询复杂性。适用于 Apache Flink 的亚马逊托管服务以 Amazon KPU 的形式配置容量。一个 KPU 为您提供 1 个 vCPU 和 4GB 内存。
定价与计费
我们根据用于运行串流应用程序的 Amazon KPU 的数量,按小时收取费用。一个 KPU 表示一个流处理容量单元,由 1 个 vCPU 计算和 4GB 内存组成。适用于 Apache Flink 的亚马逊托管服务会自动调整串流应用程序所需的 KPU 数量,因为内存和计算需求会因处理复杂性和处理串流数据的吞吐量而异。
构建 Apache Flink 应用程序
使用 Apache Flink 在您的 IDE 中编写应用程序代码
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"));
如果这些运算符不能满足您的需求,您可以构建自定义运算符。更多示例请参阅《适用于 Apache Flink 的亚马逊托管服务开发人员指南》的“运算符”部分。您可以在 Apache Flink 文档中查看完整的 Apache Flink 运算符列表。
- 串流数据来源: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 Flink Studio 应用程序的亚马逊托管服务
问:如何开发应用程序?
您可以从适用于 Apache Flink Studio 的亚马逊托管服务、Amazon Kinesis Data Streams 或 Amazon MSK 控制台开始,只需几步即可启动一个无服务器笔记本,从而迅速查询数据流并开展交互式数据分析。
交互式数据分析:您可以使用 SQL、Python 或 Scala 等语言在笔记本中编写代码,以同您的流式数据交互,查询将在数秒内响应。您可以使用内置的可视化功能在您的笔记本内部探索数据、查看流式数据的实时见解,并开发出由 Apache Flink 提供支持的流处理应用程序。
当您的代码已准备好作为生产应用程序运营时,只需一步,就能转化成流处理应用程序,每秒可处理数 GB 的数据,并且无需服务器。
流处理应用程序:准备好将代码推广到生产环境后,您可以通过单击笔记本界面中的“作为流处理应用程序部署”,或者在 CLI 中发出单个命令来构建代码。Studio 会处理大规模运行流处理应用程序所需的所有基础设施管理,并启用自动扩缩功能和持久状态,就像在适用于 Apache Flink 应用程序的亚马逊托管服务中一样。
问:应用程序代码是怎样的?
您可以借助 Apache Flink 的 Table API,利用您偏好的语言(如 SQL、Python 或 Scala)在笔记本中编写代码。Table API 是一种高度抽象化、关系化的 API,能够支持 SQL 能力的超集。它将提供诸多熟悉的运营功能,例如选择、筛选、加入、按条件分组、整合等,此外还有窗口化等流式特定概念。您可以使用 % 来指定需要在笔记本部分中使用的语言,在不同语言之间切换。编译程序是 Apache Zeppelin 的插件,让您可以为笔记本的各个部分指定语言或数据处理引擎。您还可以打造由用户定义的功能,并引用这些功能来提升代码的功能。
问:服务支持哪些 SQL 操作?
您可以执行如下所示的 SQL 操作:
- 扫描和筛选(SELECT、WHERE)
- 聚合(GROUP BY、GROUP BY WINDOW、HAVING)
- 设置(UNION、UNIONALL、INTERSECT、IN、EXISTS)
- 排序(ORDER BY、LIMIT)
- 联接(INNER、OUTER、Timed Window — BETWEEN、AND、与暂存表联接 — 跟踪一段时间内的变化的表)
- 前 N 个
- 去重复
- 模式识别
其中某些查询功能,诸如 GROUP BY、OUTER JOIN 和 前 N 个均为串流数据的“结果更新”,意味着在处理串流数据时,这些结果将持续更新。此外,还支持 CREATE、ALTER 和 DROP 等其他 DDL 语句。有关查询和示例的完整列表,请参阅 Apache Flink 查询文档。
问:服务能为 Python 和 Scala 提供哪些支持?
Apache Flink 的 Table API 能够采用 Python 语句和 Scala 表达通过语言整合为 Python 和 Scala 提供支持。其所支持的操作与 SQL 操作十分类似,包括选择、排序、分组、加入、筛选和窗口化。我们的开发人员指南中包含操作和示例的完整列表。
问:支持哪些版本的 Apache Flink 和 Apache Zepplin?
要了解有关支持的 Apache Flink 版本的更多信息,请访问适用于 Apache Flink 的亚马逊托管服务发行说明页面。本页还包括适用于 Apache Flink 的亚马逊托管服务支持的 Apache Zeppelin、Apache Beam、Java、Scala、Python 和 AWS SDK 的版本。
问:适用于 Apache Flink 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 等目标。当您创建或配置适用于 Apache Flink 应用程序的亚马逊托管服务时,您可以为这些自定义的连接器附加可执行文件。
服务水平协议
问:适用于 Apache Flink 的亚马逊托管服务 SLA 提供哪些保证?
我们的服务水平协议(SLA)保证适用于 Apache Flink 的亚马逊托管服务的月度正常运行时间百分比至少达到 99.9%。
问:怎样确定我是否有资格获得 SLA 服务抵扣?
对于您运行任务所在的可用区,如果同一个 AWS 区域内有一个以上的可用区在任何月度账单周期内的月度正常运行时间百分比没有达到 99.9%,那么您就有资格获得适用于 Apache Flink 的亚马逊托管服务 SLA 规定的适用于 Apache Flink 的亚马逊托管服务的 SLA 服务抵扣金。如需所有 SLA 条款与条件的完整详细信息,以及如何提交索赔的详细信息,请访问适用于 Apache Flink 的亚马逊托管服务 SLA 详细信息页面。
Amazon Kinesis Data Analytics 入门
访问 Amazon Kinesis Data Analytics 定价页面。
通过分步指南了解如何使用 Amazon Kinesis Data Analytics for SQL 或 Amazon Kinesis Data Analytics for Apache Flink。
从 Amazon Kinesis Data Analytics 控制台构建第一个流应用程序。