Vertica 连接 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Vertica 连接

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

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

配置 Vertica 连接

要从 Amazon Glue 连接到 Vertica,您需要创建 Vertica 凭证并将其存储在某个 Amazon Secrets Manager 密钥中,然后将该密钥关联到某个 Vertica Amazon Glue 连接。如果您的 Vertica 实例位于某个 Amazon VPC 中,则还需要提供 Amazon Glue Vertica 连接的联网选项。您需要提供读取和写入数据库时用于临时存储的 Amazon S3 存储桶或文件夹。

要从 Amazon Glue 连接到 Vertica,您将需要满足一些先决条件:

  • 读取和写入数据库时用于临时存储的 Amazon S3 存储桶或文件夹,也称为 tempS3Path

    注意

    在 Amazon Glue 任务数据预览中使用 Vertica 时,临时文件可能不会自动从 tempS3Path 中删除。为确保删除临时文件,请在数据预览窗格中选择结束会话,以直接结束数据预览会话。

    如果无法保证数据预览会话直接结束,请考虑将 Amazon S3 生命周期配置设置为删除旧数据。我们建议根据最大作业运行时间加一定的裕度移除已存在超过 49 小时的数据。有关配置 Amazon S3 生命周期的更多信息,请参阅 Amazon S3 文档中的 管理存储生命周期

  • 对您的 Amazon S3 路径具有适当权限,并且您可以将其关联到您的 Amazon Glue 作业角色的 IAM policy。

  • 如果您的 Vertica 实例位于某个 Amazon VPC 中,请确保您的 Amazon VPC 配置允许您的 Amazon Glue 作业与 Vertica 实例进行通信,并且无需通过公共互联网路由流量。

    在 Amazon VPC 中,确定或创建将在执行 Amazon Glue 作业时使用的 VPC子网安全组。此外,您的 Amazon VPC 配置需要允许您的 Vertica 实例与该位置之间的网络流量。您的作业需要与您的 Vertica 客户端端口(默认为 5433)建立 TCP 连接。根据您的网络布局,这可能需要更改安全组规则、网络 ACL、NAT 网关和对等连接。

然后您可以继续配置 Amazon Glue 以便与 Vertica 配合使用。

配置 Vertica 连接:
  1. 在 Amazon Secrets Manager 中,使用您的 Vertica 凭证 verticaUsernameverticaPassword 创建一个密钥。要在 Secrets Manager 中创建密钥,请按照 Amazon Secrets Manager 文档中创建 Amazon Secrets Manager 密钥中的教程进行操作。创建密钥后,保留密钥名称 secretName,以供下一步使用。

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

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

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

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

    • 选择 Vertica 主机时,请提供您安装了 Vertica 的主机名。

    • 选择 Vertica 端口时,请提供可用于访问 Vertica 安装的端口。

    • 选择 Amazon 密钥时,请提供 secretName

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

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

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

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

  • 向与您的 Amazon Glue 作业关联的 IAM 角色授予对 tempS3Path 的权限。

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

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

从 Vertica 读取

先决条件:

  • 您要读取的 Vertica 表。您需要 Vertica 数据库名 dbName 和表名 tableName

  • 为了提供身份验证信息而配置的 Amazon Glue Vertica 连接。完成上一节“配置 Vertica 连接”中的步骤,以配置您的身份验证信息。您需要 Amazon Glue 连接的名称 connectionName

  • 前面提到的用作临时存储的 Amazon S3 存储桶或文件夹。您将需要名称 tempS3Path。您将需要使用 s3a 协议连接到此位置。

例如:

dynamicFrame = glueContext.create_dynamic_frame.from_options( connection_type="vertica", connection_options={ "connectionName": "connectionName", "staging_fs_url": "s3a://tempS3Path", "db": "dbName", "table": "tableName", } )

您还可以提供 SELECT SQL 查询来筛选返回到 DynamicFrame 的结果,或者访问来自多个表的数据集。

例如:

dynamicFrame = glueContext.create_dynamic_frame.from_options( connection_type="vertica", connection_options={ "connectionName": "connectionName", "staging_fs_url": "s3a://tempS3Path", "db": "dbName", "query": "select * FROM tableName", }, )

写入 Vertica 表

此示例会将来自现有 DynamicFrame dynamicFrame 的信息写入 Vertica。如果表中已经含有信息,Amazon Glue 会将来自 DynamicFrame 的数据附加到现有信息之后。

先决条件:

  • 您要写入的当前已有或需要的表名 tableName。您还需要相应的 Vertica 数据库名 dbName

  • 为了提供身份验证信息而配置的 Amazon Glue Vertica 连接。完成上一节“配置 Vertica 连接”中的步骤,以配置您的身份验证信息。您需要 Amazon Glue 连接的名称 connectionName

  • 前面提到的用作临时存储的 Amazon S3 存储桶或文件夹。您将需要名称 tempS3Path。您将需要使用 s3a 协议连接到此位置。

例如:

glueContext.write_dynamic_frame.from_options( frame=dynamicFrame, connection_type="vertica", connection_options={ "connectionName": "connectionName", "staging_fs_url": "s3a://tempS3Path", "db": "dbName", "table": "tableName", } )

Vertica 连接选项参考

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

  • db – 必需。用于读/写。您的连接方法将与之交互的 Vertica 中数据库的名称。

  • dbSchema – 如果需要标识您的表,则为必填项。用于读/写。默认值:public。您的连接方法将与之交互的 Schema 的名称。

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

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

  • staging_fs_url – 必需。用于读/写。有效值:s3a URL。用作临时存储的 Amazon S3 存储桶或文件夹的 URL。