在 AWS Glue 中添加流式处理 ETL 作业 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

在 AWS Glue 中添加流式处理 ETL 作业

您可以创建连续运行的流提取、转换和加载(ETL)作业,从而使用来自流媒体源的数据 Amazon Kinesis Data Streams 和 Amazon Managed Streaming for Apache Kafka (Amazon MSK)、执行转换并将结果加载到 Amazon S3 DataLakes或JDBC数据存储区。

默认情况下,AWS Glue 在 100 秒的时段内处理和写出数据。这允许有效处理数据,并允许在晚于预期数据的数据上执行汇总。您可以修改此窗口大小以增加及时性或聚合精度。AWS Glue 使用检查点而非作业书签来跟踪已读取的数据。

创建流式处理 ETL 作业涉及以下步骤:

  1. 对于ApacheKafka流源,创建一个 AWS Glue 连接到 Amazon MSK 群集。

  2. 手动为流式处理源创建 Data Catalog 表。

  3. 为流式处理数据源创建 ETL 作业。定义特定于流式处理的作业属性,并提供您自己的脚本或(可选)修改生成的脚本。

在创建流媒体ETL作业时 Amazon Kinesis Data Streams,您不必创建 AWS Glue 连接。但是,如果连接到 AWS Glue 流媒体工作 Kinesis Data Streams 作为源,然后是虚拟私有云(vpc)端点 Kinesis 为必填项。有关详细信息,请参阅 创建接口端点Amazon VPC 用户指南.

注意

GLUE版本2.0不支持流式ETL作业。有关详细信息,请参阅 运行火花ETL作业,启动时间缩短.

创建 AWS Glue ApacheKafka数据流连接

要从 Apache Kafka 流中进行读取,您必须创建 AWS Glue 连接。

为 Kafka 源创建 AWS Glue 连接(控制台)

  1. 通过以下网址打开 AWS Glue 控制台:https://console.amazonaws.cn/glue/

  2. 在导航窗格的 Data catalog (数据目录) 下,选择 Connections (连接)

  3. 选择 Add connection (添加连接),然后在 Set up your connection’s properties (设置连接的属性) 页面上,输入连接名称。

  4. 对于 Connection type (连接类型),选择 Kafka

  5. 对于 Kafka引导服务器URL,输入AmazonMSK群集引导经纪人的主机和端口号。有关获取引导代理信息的详细信息,请参阅 获取亚马逊MSK群集的引导经纪人Amazon Managed Streaming for Apache Kafka 开发人员指南. 仅使用传输层安全(TLS)端点建立与KAFKA群集的初始连接。不支持Plaintext端点。

    以下是主机名称和端口号对 Amazon MSK 群集。

    myserver1.kafka.us-east-1.amazonaws.com:9094,myserver2.kafka.us-east-1.amazonaws.com:9094,myserver3.kafka.us-east-1.amazonaws.com:9094
  6. 完成连接向导。您必须为 Amazon MSK 群集:虚拟私有云(vpc)ID、群集使用的一个子网以及可访问群集的安全组ID。

    有关 AWS Glue 连接的更多信息,请参阅 AWS Glue 连接

为流式处理源创建 Data Catalog 表

创建流式处理 ETL 作业之前,您必须手动创建 Data Catalog 表来指定源数据流属性。此表用作流式处理 ETL 作业的数据源。

可使用 AWS Glue 控制台、AWS Command Line Interface (AWS CLI) 或 AWS Glue API 创建表。有关使用 AWS Glue 控制台手动创建表的信息,请参阅在 AWS Glue 数据目录 中定义表

注意

无法使用 AWS Lake Formation 控制台创建表;必须使用 AWS Glue 控制台。

在创建表时,请设置以下特定于流的属性,并确保完全指定表架构。

源的类型

KinesisKafka

对于 Kinesis 源:
流名称

流名称,如 创建流股 AmazonKinesis数据流开发人员指南.

Kinesis 源 URL

Amazon Kinesis Data Streams 服务的完全限定 URL。

示例:https://kinesis.us-east-1.amazonaws.com

对于 Kafka 源:
主题名称

Kafka 中指定的主题名称。

Connection

一个引用 Kafka 源的 AWS Glue 连接,如创建 AWS Glue ApacheKafka数据流连接中所述。

定义流式处理 ETL 作业的作业属性

在 AWS Glue 控制台上定义流式处理 ETL 作业时,请提供以下特定于流的属性。有关其他作业属性的说明,请参阅定义作业属性。有关如何使用 AWS Glue 控制台添加作业的更多信息,请参阅在 AWS Glue 控制台上处理作业

IAM 角色

指定用于对运行作业、访问流式处理源和访问目标数据存储所用的资源进行授权的 AWS Identity and Access Management (IAM) 角色。

要访问 Amazon Kinesis Data Streams,请将 AmazonKinesisFullAccess AWS 托管策略附加到该角色,或附加类似的 IAM 策略来允许更精细的访问。有关示例策略,请参阅使用 IAM 控制对 Amazon Kinesis Data Streams 资源的访问

有关在 AWS Glue 中运行作业的权限的更多信息,请参阅Managing Access Permissions for AWS Glue Resources

Type

选择 Spark streaming (Spark 流式处理)

Glue 版本

必须是 1.0 或更高版本。

最大容量

设置小于或等于源流中的分片/分区数的最大容量。此设置可防止 AWS Glue 分配无法使用的容量。默认为 5 个 DPU。

作业超时

(可选)输入持续时间(以分钟为单位)。如果将此字段留空,作业将连续运行。

数据源

指定您在为流式处理源创建 Data Catalog 表中创建的表。

数据目标

执行以下任一操作

  • 选择 Create tables in your data target (在数据目标中创建表) 并指定以下数据目标属性。

    数据存储

    选择 Amazon S3 或 JDBC。

    格式

    选择任意格式。所有项都支持流式处理。

  • 选择 Use tables in the data catalog and update your data target (使用数据目录中的表并更新数据目标),然后选择 JDBC 数据存储的表。

Script

(可选)提供您自己的脚本或修改生成的脚本以执行 Apache Spark Structured Streaming 引擎支持的操作。有关可用操作的信息,请参阅流式处理 DataFrame/数据集的操作

流式处理 ETL 注释和限制

请记住以下注释和限制:

  • 您的ETL脚本可以使用 AWS Glue 内置转换和ApacheSpark结构化流媒体的转换。有关详细信息,请参阅 对流数据消除/数据集的操作 在ApacheSpark网站或 内置转换.

  • AWS Glue 使用检查点来跟踪已读取的数据。因此,停止并重新启动的作业将从流中停止的位置开始。如果要重新处理数据,您可以删除脚本中引用的检查点文件夹。

  • 不支持作业书签。

  • 数据目标支持 Avro 格式,但数据源不支持此格式。

  • 您不能更改 Amazon Kinesis 数据流IFA AWS Glue 流媒体作业正在运行来自该流的数据。首先停止作业,修改流碎片,然后重新启动作业。

  • Kinesis 流必须位于与 AWS Glue 作业相同的账户中。

  • ApacheKafka目前仅支持 Amazon MSK.

  • 您不能将作为消费者的作业注册为增强的扇出功能 Kinesis Data Streams.