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(而非 Realtime)。

  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. Name(名称)字段中,输入一个名称,例如 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 集群的端点。如果未选择使用连接,系统会显示此字段。
Port(端口) Redshift 运行的端口。如果未选择使用连接,则会显示此字段。
用户名 用于连接到指定数据库的用户身份。如果未选择使用连接,系统会显示此字段。
密码 用于连接到指定数据库的密码。如果未选择使用连接,系统会显示此字段。
连接参数 作为连接参数的任意字符串键值对列表。 这些参数会作为连接参数传递给 JDBC 驱动程序,以便可能需要额外配置的 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(precision, scale)/decimal(precision, scale) decimal
精度为 0 的 numeric 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. 获取必须连接到 Redshift 集群的Google Cloud 上的服务或机器的外部 IP 地址,例如代理服务器 IP(请参阅查看 IP 地址)。对于 Dataproc 集群,请获取所有主节点和子节点的 IP 地址。
  2. 为机器 IP 地址创建入站规则,将 IP 地址添加到安全群组中的许可名单。 Google Cloud

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

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

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

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

  1. 在 Cloud Data Fusion 流水线的 Studio 页面上,找到 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

后续步骤