在 AWS Schema Conversion Tool 中将 ETL 过程转换为 AWS Glue - AWS Schema Conversion Tool

在 AWS Schema Conversion Tool 中将 ETL 过程转换为 AWS Glue

在以下部分中,您可以找到使用 AWS SCT 将 ETL 脚本转换为 AWS Glue 的过程概述。在本示例中,我们将 Oracle 数据库转换为 Amazon Redshift,并将 ETL 过程与源数据库和数据仓库结合使用。

以下架构图显示了一个示例数据库迁移项目,其中包括将 ETL 脚本转换为 AWS Glue。

显示数据库和 ETL 的转换的示意图。

先决条件

开始之前,请执行以下操作:

  • 迁移您打算迁移到 AWS 的任何源数据库。

  • 将目标数据仓库迁移到 AWS。

  • 收集 ETL 过程中涉及的所有代码的列表。

  • 收集每个数据库的所有必要连接信息的列表。

此外,AWS Glue 需要权限才能代表您访问其他 AWS 服务。您通过使用 AWS Identity and Access Management(IAM)提供这些权限。请确保您已为 AWS Glue 创建了 IAM 策略。有关更多信息,请参阅《AWS Glue 开发人员指南》中的创建 AWS Glueservice IAM 策略

了解 AWS Glue 数据目录

作为转换过程的一部分,AWS Glue 加载与源数据库和目标数据库相关的信息。它将这些信息分成不同的类别,并采用称为 的结构。此结构包括以下内容:

  • 连接:连接参数

  • 爬网程序:爬网程序的列表,每个架构对应一个爬网程序

  • 数据库:容纳表的容器

  • :表示表中数据的元数据定义

  • ETL 作业:执行 ETL 工作的业务逻辑

  • 触发器:用于控制 ETL 作业何时在 AWS Glue 中运行(是否按需、按计划或由作业事件触发)的逻辑

AWS Glue 数据目录 是数据的位置、架构和运行时指标的索引。当您结合使用 AWS Glue 与 AWS SCT 时,AWS Glue 数据目录包含对在 AWS Glue 中用作 ETL 作业的源和目标的数据的引用。要创建数据仓库,请编录该数据。

您可以使用数据目录中的信息创建和监控您的 ETL 作业。通常,您运行爬网程序来清点数据存储中的数据,但还有其他方法可以将元数据表添加到数据目录中。

当您在数据目录中定义表时,您将其添加到数据库中。数据库用于组织 AWS Glue 中的表。

将 AWS SCT 和 AWS Glue 结合使用进行转换的限制

结合使用 AWS SCT 与 AWS Glue 进行转换时存在以下限制。

资源 默认限制
每个账户的数据库数量 10000
每个数据库的表数量 100000
每个表的分区数量 1000000
每个表的表版本数量 100000
每个账户的表数量 1000000
每个账户的分区数量 10,000,000
每个账户的表版本数量 1000000
每个账户的连接数量 1000
每个账户的爬网程序数量 25
每个账户的作业数量 25
每个账户的触发器数量 25
每个账户的并发作业运行数量 30
每个作业的并发作业运行数量 3
每个触发器的作业数量 10
每个账户的开发端点数量 5
开发端点一次使用的最大数据处理单元(DPU)数 5
角色一次使用的最大 DPU 数 100
数据库名称长度

无限制

为了与其他元数据存储(如 Apache Hive)兼容,名称会更改为使用小写字符。

如果您计划从 Amazon Athena 访问数据库,请提供只包含字母数字和下划线字符的名称。

连接名称长度 无限制
爬网程序名称长度 无限制

步骤 1:创建新项目

要创建新项目,请执行以下简要步骤:

  1. 在 AWS SCT 中创建一个新项目。有关更多信息,请参阅 在 AWS SCT 中启动和管理项目

  2. 将源数据库和目标数据库添加到项目中。有关更多信息,请参阅 在 AWS SCT 中将服务器添加到项目

    确保已在目标数据库连接设置中选择了使用 AWS Glue。为此,请选择 AWS Glue 选项卡。对于从 AWS 配置文件复制,选择要使用的配置文件。配置文件应自动填写 AWS 访问密钥、私有密钥和 Amazon S3 存储桶文件夹。如果不是这样,请自行输入这些信息。选择 OK (确定) 后,AWS Glue 分析对象并将元数据加载到 AWS Glue 数据目录中。

    根据您的安全设置,您可能会收到一条警告消息,指出您的账户对服务器上的某些架构没有足够的权限。如果您有权访问您使用的架构,您可以安全地忽略此消息。

  3. 要完成准备导入您的 ETL,请连接到源数据库和目标数据库。为此,请在源元数据树或目标元数据树中选择您的数据库,然后选择连接到服务器

AWS Glue 在源数据库服务器上创建一个数据库,也在目标数据库服务器创建一个数据库,以帮助进行 ETL 转换。目标服务器上的数据库包含 AWS Glue 数据目录。要查找特定对象,请在源面板或目标面板上使用搜索。

要查看特定对象如何转换,请找到要转换的项,然后从其上下文(右键单击)菜单中选择转换架构。AWS SCT 将此选定的对象转换为脚本。

您可以在右侧面板的脚本文件夹中查看转换后的脚本。当前,脚本是一个虚拟对象,只能作为 AWS SCT 项目的一部分使用。

要使用转换后的脚本创建 AWS Glue 作业,请将脚本上传到 Amazon S3。要将脚本上传到 Amazon S3,请选择脚本,然后从其上下文(右键单击)菜单中选择 保存至 S3

步骤 2:创建 AWS Glue 作业

将脚本保存到 Amazon S3 后,您可以选择它,然后选择配置 AWS Glue 作业以打开向导配置 AWS Glue 作业。此向导可让您更轻松地对其进行设置:

  1. 在向导的第一个选项卡设计数据流上,您可以选择执行策略以及要纳入这一个作业的脚本列表。您可以为每个脚本选择参数。也可以重新排列脚本,以便它们以正确的顺序运行。

  2. 在第二个选项卡上,您可以为作业命名,并直接配置 AWS Glue 的设置。在此屏幕上,您可以配置以下设置:

    • AWS Identity and Access Management(IAM)角色

    • 脚本文件名和文件路径

    • 使用具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)加密脚本

    • 临时目录

    • 生成的 Python 库路径

    • 用户 Python 库路径

    • 从属 .jar 文件的路径

    • 引用的文件路径

    • 每个作业运行的并发 DPU 数量

    • 最大并发数

    • 作业超时(分钟)

    • 延迟通知阈值(分钟)

    • 重试次数

    • 安全配置

    • 服务器端加密

  3. 在第三个步骤或选项卡中,您可以选择已配置的到目标端点的连接。

配置完作业后,作业会显示在 AWS Glue 数据目录中的 ETL 作业下。如果您选择该作业,设置将显示,因此您可以查看或编辑它们。要在 AWS Glue 中创建新的作业,请从作业的上下文(右键单击)菜单中选择创建 AWS Glue 作业。执行此操作将应用架构定义。要刷新显示内容,请从上下文(右键单击)菜单中选择 Refresh from database (从数据库刷新)

此时,您可以在 AWS Glue 控制台中查看您的作业。为此,请登录 AWS 管理控制台 并通过以下网址打开 AWS Glue 控制台:https://console.aws.amazon.com/glue/

您可以测试新作业以确保它正确工作。为此,首先检查源表中的数据,然后验证目标表是否为空。运行作业,然后再次检查。可以从 AWS Glue 控制台中查看错误日志。