Redshift 批量来源

本页面介绍如何使用 Cloud Data Fusion 将数据从 Amazon Redshift 实例加载到Google Cloud 。借助 Redshift 源连接器,您可以将 Redshift 数据集中的表同步到目标位置(例如 BigQuery)。您还可以使用该连接器创建可配置的 SQL 查询。

准备工作

  • Cloud Data Fusion 6.9.0 版及更高版本支持 Redshift 数据源。
  • 配置 Redshift 源连接器时,您可以选择可重复使用的现有连接,也可以创建一次性新连接。如需了解详情,请参阅管理连接。重复使用连接时,请注意以下事项:

    • 您无需提供凭据。
    • 现有连接提供用于生成导入查询的架构和表名称信息。

配置插件

  1. 前往 Cloud Data Fusion 网页界面,然后点击 Studio。

  2. 检查是否已选择数据流水线 - 批量(而非实时)。

  3. 在来源菜单中,点击 Redshift。Redshift 节点会显示在流水线中。如果您在 Studio 页面上看不到 Redshift 数据��,请从 Cloud Data Fusion Hub 部署 Redshift 数据源连接器。

  4. 如需配置来源,请前往 Redshift 节点,然后点击属性。

  5. 输入以下属性。如需查看完整列表,请参阅属性。

    1. 输入 Redshift 节点的标签,例如 Redshift tables。
    2. 输入连接详细信息。您可以设置新的临时连接,也可以设置现有的可重复使用的连接。

      新增关联项

      如需添加与 Redshift 的一次性连接,请按以下步骤操作:

      1. 保持使用连接处于关闭状态。
      2. 在 JDBC 驱动程序名称字段中,输入驱动程序的名称。 Redshift 支持两种类型的 JDBC 驱动程序:CData 和 Amazon。如需了解详情,请参阅上传 JDBC 驱动程序。
      3. 在主机字段中,输入 Redshift 集群的端点,例如 cdf-redshift-new.example-endpoint.eu-west-1.redshift.amazonaws.com。
      4. 可选:在端口字段中,输入数据库端口号,例如 5439。
      5. 如果您的 Redshift 数据库需要身份验证,请执行以下操作:

        1. 在用户名字段中,输入数据库的名称。
        2. 在密码字段中,输入数据库的密码。
        3. 可选:在实参字段中,输入键值实参。如需使用 CData 驱动程序,请提供连接实参(例如 RTK 或 OEMKey,如果适用)。
        4. 在名称字段中,输入一个名称,例如 SN-PC-Source-01-01-2024。
        5. 在数据库字段中输入目标数据库名称,例如 datafusiondb。

      可重复使用的连接

      如需重复使用现有连接,请按以下步骤操作:

      1. 开启使用连接。
      2. 点击浏览连接。
      3. 点击连接名称。

      4. 可选:如果不存在连接,并且您想创建新的可重复使用的连接,请点击添加连接,然后参阅此页面上新连接标签页中的步骤。

    3. 在导入查询字段中,使用 Redshift 来源中的架构和表名称输入查询,例如 Select * from "public"."users"。

    4. 可选:输入高级属性,例如边界查询或拆分次数。如需查看所有属性说明,请参阅属性。

  6. 可选:点击验证,然后解决发现的所有错误。

  7. 点击 关闭。系统会保存这些属性,然后���可以在 Cloud Data Fusion 网页界面中继续构建数据流水线。

属性

属性 支持用于自动化的宏 必需属性 说明
标签 否 是 数据流水线中节点的名称。
使用连接 否 否 浏览与来源的连接。如果使用连接处于开启状态,您无需提供凭据。
连接 是 是 要使用的连接的名称。如果选择了使用连接,则会显示此字段。数据库和表信息由连接提供。
JDBC 驱动程序名称 是 是 要使用的 JDBC 驱动程序的名称。如果未选择使用连接,则会显示此字段。
主机 是 是 Amazon Redshift 集群的端点。如果未选择使用连接,则会显示此字段。
端口 是 否 Redshift 运行的端口。如果未选择使用连接,则会显示此字段。
用户名 是 否 用于连接到指定数据库的用户身份。如果未选择使用连接,则会显示此字段。
密码 是 否 用于连接到指定数据库的密码。如果未选择使用连接,则会显示此字段。
连接实参 是 否 作为连接实参的任意字符串键值对列表。 这些实参会作为连接实参传递给可能需要额外配置的 JDBC 驱动程序。如果未选择使用连接,则会显示此字段。
参考名称 否 是 唯一标识此来源,用于沿袭、注释元数据和其他服务。
数据库 是 是 Redshift 数据库名称。如需选择数据,请点击浏览数据库。
导入查询 是 是 用于从指定表中导入数据的 SELECT 查询。
边界查询 是 否 返回 splitBy 字段中最小值和最大值的 SQL 查询。例如:SELECT MIN(id),MAX(id) FROM table如果 numSplits 设置为 1,则此字段不是必需字段。
拆分列 是 否 用于生成拆分的字段名称。如果 numSplits 设置为 1,则此字段不是必需字段。
分片数 是 否 要生成的分片数。
大小 是 否 每次提取的行数(按拆分)。较大的提取大小可以加快导入速度,但会增加内存用量。如果您未指定此项,则默认设置为 1000。

数据类型映射

下表列出了 Redshift 数据类型及其对应的 CDAP 类型:

Redshift 数据类型 CDAP 架构数据类型
bigint long
boolean boolean
character string
character varying string
date date
double precision double
geometry bytes
hllsketch string
integer int
json string
numeric(精度,比例)/decimal(精度,比例) decimal
numeric(精确度为 0) string
real float
smallint int
super string
text string
time [ (p) ],无时区 time
time [ (p) ],有时区 string
timestamp [ (p) ],无时区 timestamp
timestamp [ (p) ],有时区 timestamp
varbyte byte
xml string

最佳做法

从Google Cloud连接到 Redshift 集群时,请遵循以下最佳实践。

使用 IP 地址许可名单

为防止来自未经授权的来源的访问,并限制对特定 IP 地址的访问,请在 Redshift 集群上启用访问权限控制。

如果您使用 Redshift 访问权限控制,请按以下步骤操作,以便在 Cloud Data Fusion 中访问集群:

  1. 获取Google Cloud 上必须连接到 Redshift 集群的服务或机器的外部 IP 地址,例如代理服务器 IP(请参阅查看 IP 地址)。对于 Managed Service for Apache Spark 集群,获取所有主节点和子节点的 IP 地址。
  2. 通过为 Google Cloud 机器 IP 地址创建入站规则,将 IP 地址添加到安全组的许可名单中。

  3. 在 Wrangler 中添加连接属性并进行测试:

    1. 在网页界面中打开 Cloud Data Fusion 实例。
    2. 依次点击 Wrangler > 添加连接,然后为 Redshift 创建新连接。
    3. 输入所有连接属性。
    4. 点击测试连接,然后解决所有问题。

如需创建多个拆分,请使用边界查询

对于多次拆分,请使用边界查询来管理多节点集群。如果您需要从 Redshift 中提取数据,并将负载均匀分配到每个节点,请在 Redshift 源连接器属性中配置边界查询。

  1. 在 Studio 页面上的 Cloud Data Fusion 流水线中,前往 Redshift 节点,然后点击属性。
  2. 在高级属性中,指定以下内容:

    1. 输入要创建的分割数。
    2. 为每个拆分输入提取大小。
    3. 输入要应用于多节点 Redshift 集群的边界查询。
    4. 输入拆分列字段名称。

例如,假设您有以下使用情形:

  • 您有一个包含 1,000 万条记录的表。
  • 它有一个名为 id 的唯一 ID 列。
  • Redshift 集群有 4 个节点。
  • 目标:为了充分发挥集群的潜力,您计划生成多个分片。为此,请使用以下属性配置:

    • 在边界查询字段中,输入以下查询:

      SELECT MIN(id), MAX(id) FROM tableName
      

      在此查询中,id 是应用拆分的列的名称。

    • 在拆分列字段中,输入列名称 id。

    • 输入拆分次数和提取大小。这些属性相互关联,可让您根据提取大小计算拆分,反之亦然。在此示例中,请输入以下内容。

    • 在拆分次数字段中,输入 40。在此示例中,假设表包含 1,000 万条记录,创建 40 个拆分后,每个拆分将包含 25 万条记录。

    • 在提取大小字段中,输入 250,000。

后续步骤