本页面介绍如何使用 Cloud Data Fusion 将数据从 Amazon Redshift 实例加载到 Google Cloud。借助 Redshift 源连接器,您可以将 Redshift 数据集中的表同步到目标位置,例如 BigQuery。借助连接器,您还可以创建可配置的 SQL 查询。
准备工作
- Cloud Data Fusion 6.9.0 版及更高版本支持 Redshift 来源。
配置 Redshift 源连接器时,您可以选择现有的可重复使用的连接,也可以创建新的一次性连接。如需了解详情,请参阅管理连接。重复使用连接时,请注意以下事项:
- 您无需提供凭据。
- 现有连接提供用于生成导入查询的架构和表名称信息。
配置插件
转到 Cloud Data Fusion 网页界面,然后点击 Studio。
检查是否已选择 Data Pipeline - Batch(而非实时)。
在 Source 菜单中,点击 Redshift。Redshift 节点将显示在您的流水线中。如果您在 Studio 页面上没有看到 Redshift 来源,请从 Cloud Data Fusion Hub 部署 Redshift 源连接器。
如需配置来源,请转到 Redshift 节点,然后点击属性。
输入以下属性。如需查看完整列表,请参阅属性。
- 输入 Redshift 节点的标签,例如
Redshift tables
。 输入连接详情。您可以设置新的一次性连接,也可以设置可重复使用的现有连接。
新增关联项
要添加与 Redshift 的一次性连接,请按以下步骤操作:
- 使使用连接保持关闭状态。
- 在 JDBC 驱动程序名称字段中,输入驱动程序的名称。 Redshift 支持两种类型的 JDBC 驱动程序:CData 和 Amazon。如需了解详情,请参阅上传 JDBC 驱动程序。
- 在主机字段中,输入 Redshift 集群的端点,例如
cdf-redshift-new.example-endpoint.eu-west-1.redshift.amaz888onaws.com.fqhub.com
。 - 可选:在端口字段中,输入数据库端口号,例如
5439
。 如果您的 Redshift 数据库需要身份验证,请执行以下操作:
- 在用户名字段中,输入数据库的名称。
- 在密码字段中,输入数据库的密码。
- 可选:在参数字段中,输入键值对参数。如需使用 CData 驱动程序,请提供连接参数,例如 RTK 或 OEMKey(如果适用)。
- 在名称字段中,输入一个名称,例如
SN-PC-Source-01-01-2024
。 - 在 Database 字段中输入目标数据库名称,例如
datafusiondb
。
可重复使用的连接
要重复使用现有连接,请按以下步骤操作:
- 开启使用网络连接。
- 点击浏览连接。
点击连接名称。
可选:如果连接不存在,并且您想要创建新的可重复使用的连接,请点击添加连接,然后参考本页面上新建连接标签页中的步骤。
在 Import query 字段中,使用 Redshift 来源中的架构和表名称(例如
Select * from "public"."users"
)输入一个查询。可选:输入 Advanced 属性,例如边界查询或分屏数量。如需了解所有属性说明,请参阅属性。
- 输入 Redshift 节点的标签,例如
可选:点击验证,并解决发现的所有错误。
点击
关闭。属性已保存,您可以继续在 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 中访问集群,请按以下步骤操作:
- 获取 Google Cloud 上必须连接到 Redshift 集群的服务或机器的外部 IP 地址,例如代理服务器 IP(请参阅查看 IP 地址)。对于 Dataproc 集群,请获取所有主节点和子节点的 IP 地址。
通过为 Google Cloud 机器 IP 地址创建入站规则,将 IP 地址添加到安全群组的许可名单中。
在 Wrangler 中添加连接属性并对其进行测试:
- 在网页界面中打开 Cloud Data Fusion 实例。
- 依次点击 Wrangler > 添加连接,然后为 Redshift 创建新连接。
- 输入所有连接属性。
- 点击测试连接并解决所有问题。
如需创建多个分块,请使用边界查询
对于多个分块,请使用边界查询来管理多节点集群。如果您从 Redshift 提取数据并将负载均匀分布到每个节点上,请在 Redshift 来源连接器属性中配置边界查询。
- 在 Studio 页面上的 Cloud Data Fusion 流水线中,转到 Redshift 节点,然后点击属性。
在高级属性中,指定以下内容:
- 输入要创建的拆分的数量。
- 输入每个分块的提取大小。
- 输入要应用于多节点 Redshift 集群的边界查询。
- 输入拆分列字段名称。
例如,假设您有以下用例:
- 您拥有一个包含 1000 万条记录的表。
- 其中包含一个名为
id
的唯一 ID 列。 - Redshift 集群有 4 个节点。
目标:为充分利用集群的潜力,您计划生成多个拆分。为此,请使用以下属性配置:
在边界查询字段中,输入以下查询:
SELECT MIN(id), MAX(id) FROM tableName
在此查询中,
id
是应用了拆分的列的名称。在拆分列字段中,输入列名称
id
。输入分块数和提取大小。这些属性是相互关联的,让您可以根据提取大小计算拆分,反之亦然。对于此示例,请输入以下内容。
在 Number of splits 字段中,输入
40
。在本例中,表包含 1000 万条记录,创建 40 个分块会导致每个分块包含 25 万条记录。在提取大小字段中,输入
250,000
。