

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

# Amazon Managed Service for Apache Flink 入门（Python）
<a name="gs-python"></a>

本节向您介绍使用 Python 和表 API 的 Managed Service for Apache Flink的基本概念。它介绍了可用于创建和测试应用程序的选项。它还提供了相应的说明以安装所需的工具，以完成本指南中的教程和创建第一个应用程序。

**Topics**
+ [审核 Managed Service for Apache Flink 应用程序组件](#gs-python-table-components)
+ [满足先决条件](#gs-python-prerequisites)
+ [创建并运行面向 Python 应用程序的 Managed Service for Apache Flink](gs-python-createapp.md)
+ [清理 AWS 资源](gs-python-cleanup.md)

## 审核 Managed Service for Apache Flink 应用程序组件
<a name="gs-python-table-components"></a>

**注意**  
Amazon Managed Service for Apache Flink Studio 支持所有 [Apache Flink API](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/concepts/overview/#flinks-apis)。根据您选择的 API，应用程序的结构略有不同。在 Python 中开发 Apache Flink 应用程序时，一种流行的方法是使用 Python 代码中嵌入的 SQL 来定义应用程序流程。这是我们在以下入门教程中遵循的方法。

为了处理数据，Managed Service for Apache Flink 应用程序使用 Python 脚本定义数据流程，该流程使用 Apache Flink 运行时系统处理输入和生成输出。

典型的 Managed Service for Apache Flink 应用程序包含以下组件：
+ **运行时系统属性：**您可以使用*运行时属性* 配置应用程序，而无需重新编译应用程序代码。
+ **源：**应用程序使用来自一个或多个*源*的数据。源使用[连接器](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/connectors/table/overview/)从外部系统（例如 Kinesis 数据流或 Amazon MSK 主题）读取数据。您也可以使用特殊连接器从应用程序内部生成数据。使用 SQL 时，应用程序将源定义为*源表*。
+ **转换：**应用程序使用一个或多个可以筛选、丰富或聚合数据的*转换*来处理数据。使用 SQL 时，应用程序将转换定义为 SQL 查询。
+ **接收器：**应用程序通过*接收器*将数据发送到外部源。接收器使用[连接器](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/connectors/table/overview/)将数据发送到外部系统，例如 Kinesis 数据流、Amazon MSK 主题、Amazon MSK 主题、Amazon S3 存储桶或关系数据库。也可以使用特殊的连接器，仅出于开发目的打印输出。使用 SQL 时，应用程序会将接收器定义为*接收器表*，您可以在其中插入结果。有关更多信息，请参阅 [在 Managed Service for Apache Flink 中使用接收器写入数据](how-sinks.md)。

您的 Python 应用程序可能还需要外部依赖项，例如其他 Python 库或您的应用程序使用的任何 Flink 连接器。打包应用程序时，必须包含应用程序所需的所有依赖项。本教程演示如何包含连接器依赖项，以及如何打包应用程序以部署到 Amazon Managed Service for Apache Flink 上。

## 满足先决条件
<a name="gs-python-prerequisites"></a>

要完成本教程，您必须满足以下条件：
+ **Python 3.11**[，最好使用像 [VirtualEnv (venv)](https://docs.python.org/3.11/library/venv.html)、[Conda 或 Miniconda](https://docs.conda.io/en/latest/) 这样的独立环境。](https://docs.anaconda.com/miniconda/)
+  [Git 客户端](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) - 如果尚未安装 Git 客户端，请安装它。
+ [Java 开发套件（JDK）版本 11](https://www.oracle.com/java/technologies/downloads/#java11) - 安装 Java JDK 11 并将 `JAVA_HOME` 环境变量设置为指向您的安装位置。如果您没有 JDK 11，则可以使用 [Amazon Corretto](https://docs.aws.amazon.com/corretto) 或我们选择的任何标准 JDK。
  + 要验证 JDK 是否已正确安装，请运行以下命令：如果您使用的是 Amazon Corretto 11 以外的 JDK，则输出会有所不同。确保版本为 11.x。

    ```
    $ java --version
    
    openjdk 11.0.23 2024-04-16 LTS
    OpenJDK Runtime Environment Corretto-11.0.23.9.1 (build 11.0.23+9-LTS)
    OpenJDK 64-Bit Server VM Corretto-11.0.23.9.1 (build 11.0.23+9-LTS, mixed mode)
    ```
+ [Apache Maven](https://maven.apache.org/) - 如果您尚未安装 Apache Maven，请安装它。有关更多信息，请参阅[安装 Apache Maven](https://maven.apache.org/install.html)。
  + 要测试您的 Apache Maven 安装，请使用以下命令：

    ```
    $ mvn -version
    ```

**注意**  
尽管您应用程序是用 Python 编写的，但 Apache Flink 在 Java 虚拟机（JVM）中运行。它将大部分依赖项（例如 Kinesis 连接器）作为 JAR 文件分发。要管理这些依赖项并将应用程序打包为 ZIP 文件，请使用 [Apache Maven](https://maven.apache.org/)。本教程介绍如何执行此操作。

**警告**  
我们建议您使用 Python 3.11 进行本地开发。这与 Amazon Managed Service for Apache Flink 在 Flink 运行时 1.19 中使用的 Python 版本相同。  
在 Python 3.12 上安装 Python Flink 库 1.19 可能会失败。  
如果您的计算机上默认安装了另一个 Python 版本，我们建议您创建一个独立环境，例如 VirtualEnv 使用 Python 3.11。

**用于本地开发的 IDE**

我们建议您使用开发环境（例如[PyCharm](https://www.jetbrains.com/pycharm/)或 [Visual Studio Code](https://code.visualstudio.com/)）来开发和编译应用程序。

然后，完成 [开始使用适用于 Apache Flink 的亚马逊托管服务 (DataStream API)](getting-started.md) 的前两个步骤：
+ [设置 AWS 账户并创建管理员用户](setting-up.md)
+ [设置 AWS Command Line Interface (AWS CLI)](setup-awscli.md)

要开始使用，请参阅[创建 应用程序](gs-python-createapp.md)。