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. 检查是否已选择 Data Pipeline - Batch(而非实时)。

  3. Source 菜单中,点击 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.amaz888onaws.com.fqhub.com
      4. 可选:在端口字段中,输入数据库端口号,例如 5439
      5. 如果您的 Redshift 数据库需要身份验证,请执行以下操作:

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

      可重复使用的连接

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

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

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

    3. Import query 字段中,使用 Redshift 来源中的架构和表名称(例如 Select * from "public"."users")输入一个查询。

    4. 可选:输入 Advanced 属性,例如边界查询或分屏数量。如需了解所有属性说明,请参阅属性

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

  7. 点击 关闭。属性已保存,您可以继续在 Cloud Data Fusion 网页界面中构建数据流水线。

属性

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

数据类型映射

下表列出了具有相应 CDAP 类型的 Redshift 数据类型:

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 地址)。对于 Dataproc 集群,请获取所有主节点和子节点的 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. 输入拆分列字段名称。

例如,假设您有以下用例:

  • 您拥有一个包含 1000 万条记录的表。
  • 其中包含一个名为 id 的唯一 ID 列。
  • Redshift 集群有 4 个节点。
  • 目标:为充分利用集群的潜力,您计划生成多个拆分。为此,请使用以下属性配置:

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

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

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

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

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

    • Number of splits 字段中,输入 40。在本例中,表包含 1000 万条记录,创建 40 个分块会导致每个分块包含 25 万条记录。

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

后续步骤