作为具有持久状态的应用程序进行部署 - Managed Service for Apache Flink
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon Managed Service for Apache Flink 之前称为 Amazon Kinesis Data Analytics for Apache Flink。

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

作为具有持久状态的应用程序进行部署

您可以构建自己的代码并将其导出到 Amazon S3。您可以将您在笔记中编写的代码提升到持续运行的流处理应用程序。在 Managed Service for Apache Flink 上运行 Apache Flink 应用程序有两种模式:使用 Studio 笔记本,您可以交互式地开发代码,实时查看代码结果,并在笔记中对其进行可视化。将备注部署为在流模式下运行后,Managed Service for Apache Flink 会为您创建一个持续运行、从源中读取数据、写入目标、维护长时间运行的应用程序状态并根据源流的吞吐量自动缩放的应用程序。

注意

将应用程序代码导出到 S3 存储桶必须与 Studio 笔记本位于同一区域。

只有在 Studio 笔记本上部署满足以下条件的笔记:

  • 段落必须按顺序排序。部署应用程序时,注释中的所有段落将按笔记中显示的顺序(left-to-right、 top-to-bottom)执行。您可以通过在备注中选择 “运行所有段落” 来检查此顺序。

  • 您的代码是 Python 和 SQL 或 Scala 和 SQL 的组合。我们目前不支持 Python 和 Scala。 deploy-as-application

  • 您的笔记应该只有以下解释器:%flink%flink.ssql%flink.pyflink%flink.ipyflink%md

  • 不支持使用齐柏林飞艇上下文对象z。不返回任何内容的方法除了记录警告之外什么都不做。其他方法会引发 Python 异常或无法在 Scala 中编译。

  • 注释必须生成一个 Apache Flink 任务。

  • 不支持将带有动态表单的注释部署为应用程序。

  • 在部署为应用程序时,将跳过 %md (Markdown) 段落,因为这些段落应包含人类可读的文档,不适合作为生成的应用程序的一部分运行。

  • 在部署为应用程序时,将跳过禁止在齐柏林飞艇中运行的段落。即使禁用的段落使用了不兼容的解释器,例如,%flink.ipyflink在带有%flinkand %flink.ssql解释器的注释中,也会在将注释部署为应用程序时跳过该段落,并且不会导致错误。

  • 要成功部署应用程序,必须至少有一个支持运行的源代码(Flink SQL PyFlink 或 Flink Scala)段落。

  • 在通过注释部署的应用程序中,在段落中的解释器指令(例如%flink.ssql(parallelism=32))中设置并行度将被忽略。相反,您可以通过Amazon Command Line Interface或 Amazon API 更新已部署的应用程序Amazon Web Services Management Console,根据应用程序所需的并行度级别更改 Parallelism 和/或 ParallelismPer KPU 设置,也可以为已部署的应用程序启用自动缩放。

  • 如果您要部署为具有持久状态的应用程序,则您的 VPC 必须可以访问互联网。如果您的 VPC 无法访问互联网,请参阅在无法访问互联网的 VPC 中作为具有持久状态的应用程序进行部署

Scala/Python 标准

  • 在您的 Scala 或 Python 代码中,使用 Blink 计划程序senvstenv对于 Scala;s_env对于 st_env Python),而不是使用较旧的 “Flink” 计划程序(stenv_2对于 Scala,st_env_2对于 Python)。Apache Flink 项目建议在生产用例中使用 Blink 计划程序,这是齐柏林飞艇和 Flink 中的默认计划程序。

  • 您的 Python 段落不得使用 shell 调用/赋值,也不得使用本应!作为应用程序部署的 IPython 魔法命令,比如%timeit或注释%conda中。

  • 您不能使用 Scala 案例类作为传递给高阶数据流运算符(如和)的函数的参数。map filter有关 Scala 案例类的信息,请参阅 Scala 文档中的案例类

SQL 条件

  • 不允许使用简单的 SELECT 语句,因为没有任何地方可以与段落的输出部分相提并论,可以传递数据。

  • 在任何给定的段落中,DDL 语句 (USECREATEALTERDROPSETRESET) 必须在 DML (INSERT) 语句之前。这是因为段落中的 DML 语句必须作为单个 Flink 任务一起提交。

  • 最多应该有一个段落中包含 DML 语句。这是因为,对于该 deploy-as-application 功能,我们仅支持向 Flink 提交单个作业。

有关更多信息和示例,请参阅通过 Amazon Managed Service for Apache Flink、Amazon Translate 和 Amazon Comprehend 使用 SQL 函数翻译、编辑和分析流数据