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

后续步骤