Teradata Vantage 连接 - AWS Glue

Teradata Vantage 连接

在 AWS Glue 4.0 及更高版本中,您可以使用 AWS Glue for Spark 来读取和写入 Teradata Vantage 中的表。您可以使用 SQL 查询来定义要从 Teradata 中读取的信息。您可以通过 AWS Glue 连接并使用存储在 AWS Secrets Manager 中的用户名和密码凭证连接到 Teradata。

有关 Teradata 的更多信息,请参阅 Teradata 文档

配置 Teradata 连接

要从 AWS Glue 连接到 Teradata,您需要创建 Teradata 凭证并将其存储在某个 AWS Secrets Manager 密钥中,然后将该密钥关联到某个 AWS Glue Teradata 连接。如果您的 Teradata 实例位于某个 Amazon VPC 中,则还需要提供 AWS Glue Teradata 连接的联网选项。

要从 AWS Glue 连接到 Teradata,您可能需要满足一些先决条件:

  • 如果您通过 Amazon VPC 访问您的 Teradata 环境,您的 Amazon VPC 配置应允许您的 AWS Glue 作业与 Teradata 环境进行通信。我们不建议通过公共互联网访问 Teradata 环境。

    在 Amazon VPC 中,确定或创建将在执行 AWS Glue 作业时使用的 VPC子网安全组。此外,您的 Amazon VPC 配置需要允许您的 Teradata 实例与该位置之间的网络流量。您的作业需要与您的 Teradata 客户端端口建立 TCP 连接。有关 Teradata 端口的更多信息,请参阅 Teradata 文档

    根据您的网络布局,可能需要更改 Amazon VPC 和其他联网服务以建立安全的 VPC 连接。有关 AWS 连接的更多信息,请参阅 Teradata 文档中的 AWS Connectivity Options

配置 AWS Glue Teradata 连接:
  1. 在您的 Teradata 配置中,确定或创建 AWS Glue 将用于连接的用户 teradataUser 和密码 teradataPassword。有关更多信息,请参阅 Teradata 文档中的 Vantage Security Overview

  2. 在 AWS Secrets Manager 中,使用您的 Teradata 凭证创建一个密钥。要在 Secrets Manager 中创建密钥,请按照 AWS Secrets Manager 文档中创建 AWS Secrets Manager 密钥中的教程进行操作。创建密钥后,保留密钥名称 secretName,以供下一步使用。

    • 在选择键/值对时,请使用键 user 和值 teradataUsername 创建一个键值对。

    • 在选择键/值对时,请使用键 password 和值 teradataPassword 创建一个键值对。

  3. 在 AWS Glue 控制台中,按照 添加 AWS Glue 连接 中的步骤创建一个连接。创建连接后,保留连接名称 connectionName,以供下一步使用。

    • 选择连接类型时,请选择 Teradata。

    • 在提供 JDBC URL 时,请提供您的实例的 URL。您还可以在 JDBC URL 中将某些连接参数进行硬编码,并以逗号分隔。该 URL 必须符合以下格式:jdbc:teradata://teradataHostname/ParameterName=ParameterValue,ParameterName=ParameterValue

      支持的 URL 参数包括:

      • DATABASE – 主机上默认要访问的数据库的名称。

      • DBS_PORT – 在非标准端口上运行时要使用的数据库端口。

    • 选择凭证类型时,请选择 AWS Secrets Manager,然后将 AWS 密钥设置为 secretName

  4. 对于下列情况,您可能需要添加额外的配置:

    • 对于通过 Amazon VPC 在 AWS 云端托管的 Teradata 实例

      • 您需要向 AWS Glue 连接提供用于定义 Teradata 安全凭证的 Amazon VPC 连接信息。创建或更新连接时,请在网络选项中设置 VPC子网安全组

创建 AWS Glue Teradata 连接后,您需要执行以下操作,然后才能调用您的连接方法:

  • 向与您的 AWS Glue 作业关联的 IAM 角色授予读取 secretName 的权限。

  • 在 AWS Glue 作业配置中,提供 connectionName 作为附加网络连接

从 Teradata 读取

先决条件:

  • 您要读取的 Teradata 表。您需要表名 tableName

  • 为了提供身份验证信息而配置的 AWS Glue Teradata 连接。完成“配置 Teradata 连接”部分的步骤以配置您的身份验证信息。您需要 AWS Glue 连接的名称 connectionName

例如:

teradata_read_table = glueContext.create_dynamic_frame.from_options( connection_type="teradata", connection_options={ "connectionName": "connectionName", "dbtable": "tableName" } )

您还可以提供 SELECT SQL 查询来筛选返回到 DynamicFrame 的结果。您将需要配置 query

例如:

teradata_read_query = glueContext.create_dynamic_frame.from_options( connection_type="teradata", connection_options={ "connectionName": "connectionName", "query": "query" } )

写入 Teradata 表

先决条件:您要写入的 Teradata 表 tableName必须首先创建表,然后才能调用连接方法。

例如:

teradata_write = glueContext.write_dynamic_frame.from_options( connection_type="teradata", connection_options={ "connectionName": "connectionName", "dbtable": "tableName" } )

Teradata 连接选项参考

  • connectionName – 必需。用于读/写。为了向您的连接方法提供身份验证和网络信息而配置的 AWS Glue Teradata 连接的名称。

  • dbtable – 对于写入为必填项,对于读取也为必填项,但提供了 query 时除外。用于读/写。您的连接方法将与之交互的表的名称。

  • query – 用于读取。用来定义从 Teradata 读取数据时要检索的内容的 SQL SELECT 查询。