本页介绍如何将数据从 Amazon Redshift 实例加载到 Google Cloud 与 Cloud Data Fusion。通过 Redshift 源代码连接器, 从 Redshift 数据集复制到目标,例如 BigQuery。借助连接器,您还可以创建可配置的 SQL 查询。
准备工作
- Cloud Data Fusion 6.9.0 版及更高版本支持 Redshift 来源。
配置 Redshift 源连接器时,您可以选择 或创建新的一次性连接。对于 有关详情,请参阅管理关联。重复使用连接时,请注意 以下:
- 您无需提供凭据。
- 现有连接提供架构和表名称信息 用于生成导入查询。
配置插件
转到 Cloud Data Fusion 网页界面 然后点击 Studio。
检查是否选择了 Data Pipeline - Batch(而非 Realtime)。
在来源菜单中,点击 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.amazonaws.com
。 - 可选:在端口字段中,输入数据库端口
数字,例如
5439
。 如果您的 Redshift 数据库需要身份验证,请执行以下操作: 以下:
- 在用户名字段中,输入数据库的名称。
- 在密码字段中,输入 数据库。
- 可选:在参数字段中,输入 键值参数。要使用 CData 驱动程序,请提供: 连接参数,例如 RTK 或 OEMKey(如果有)。
- 在 Name(名称)字段中,输入一个名称,例如
SN-PC-Source-01-01-2024
。 - 在 Database(数据库)中输入目标数据库名称。
字段,例如
datafusiondb
。
可重复使用的连接
如需重复使用现有连接,请按以下步骤操作:
- 开启使用网络连接。
- 点击浏览连接。
点击连接名称。
可选:如果连接不存在,并且您想要创建一个 新的可重复使用的连接,请点击添加连接并参阅 请参阅本页面的新建连接标签页中的 页面。
在导入查询字段中,使用架构和表输入查询 (例如
Select * from "public"."users"
)。可选:输入高级属性,例如边界 查询或拆分数量。有关所有房源说明,请参阅 属性。
- 为 Redshift 节点输入标签,例如
可选:点击验证,并解决发现的所有错误。
点击
关闭。已保存属性,您可以继续构建数据 在 Cloud Data Fusion 网页界面中设置流水线。
属性
属性 | 支持用于自动化操作的宏 | 必需属性 | 说明 |
---|---|---|---|
标签 | 否 | 是 | 数据流水线中节点的名称。 |
使用连接 | 否 | 否 | 浏览以查找与来源的连接。如果 使用网络连接处于开启状态时,您无需提供 凭据。 |
连接 | 是 | 是 | 要使用的连接的名称。如果使用连接为 系统就会显示此字段提供了数据库和表信息 。 |
JDBC 驱动程序名称 | 是 | 是 | 要使用的 JDBC 驱动程序的名称。如果选择使用连接 未选择,系统就会显示此字段。 |
主机 | 是 | 是 | Amazon Redshift 集群的端点。如果 未选择使用连接,系统会显示此字段。 |
Port(端口) | 是 | 否 | 运行 Redshift 的端口。如果选择使用连接 未选择,系统就会显示此字段。 |
用户名 | 是 | 否 | 连接到指定数据库的用户身份。如果 未选择使用连接,系统会显示此字段。 |
密码 | 是 | 否 | 用于连接到指定数据库的密码。如果 未选择使用连接,系统会显示此字段。 |
连接参数 | 是 | 否 | 作为连接参数的任意字符串键值对的列表。 这些参数作为连接传递给 JDBC 驱动程序 参数。如果 未选择使用连接,系统会显示此字段。 |
参考名称 | 否 | 是 | 唯一标识此来源的沿袭,并添加注释 元数据和其他服务 |
数据库 | 是 | 是 | Redshift 数据库名称。要选择数据,请点击 浏览数据库。 |
导入查询 | 是 | 是 | SELECT 查询,用于从
。 |
边界查询 | 是 | 否 | 返回
splitBy 字段。例如:SELECT MIN(id),MAX(id) FROM table 在以下情况下无需提供
numSplits 已设为一。 |
拆分列 | 是 | 否 | 用于生成分块的字段名称。在以下情况下无需提供
numSplits 已设为一。 |
拆分数量 | 是 | 否 | 要生成的拆分数量。 |
大小 | 是 | 否 | 每个分块每次要提取的行数。更大的提取大小
可以加快导入的速度
。如果您未指定此项,则默认设置为 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 |
最佳做法
从以下位置连接到 Redshift 集群时,可遵循以下最佳实践 Google Cloud
使用 IP 地址许可名单
防止来自未经授权的来源的访问并限制对特定 IP 的访问 对 Redshift 集群启用访问权限控制。
如果您使用 Redshift 访问权限控制,则可以在以下位置访问集群: Cloud Data Fusion,请按以下步骤操作:
- 获取 Google Cloud 上的服务或机器的外部 IP 地址 必须连接到 Redshift 集群的 Google Cloud 服务,例如 代理服务器 IP(请参阅查看 IP 地址)。对于 Dataproc 集群,获取 所有主节点和子节点的 IP 地址。
通过创建 Google Cloud 机器 IP 地址的入站规则。
在 Wrangler 中添加连接属性并进行测试:
- 在网页界面中打开 Cloud Data Fusion 实例。
- 点击 Wrangler > 添加连接,然后创建新的 进行连接
- 输入所有连接属性。
- 点击测试连接,然后解决所有问题。
如需创建多个分块,请使用边界查询
对于多个分块,请使用边界查询来管理多节点集群。在 从 Redshift 提取数据并均匀分配负载的场景 请在 Redshift 源连接器中配置边界查询 属性。
- 在 Studio 页面上的 Cloud Data Fusion 流水线中,转到 Redshift 节点,然后点击属性。
在 Advanced 属性中,指定以下内容:
- 输入要创建的拆分数量。
- 输入每个分块的提取大小。
- 输入要应用于多节点 Redshift 集群的边界查询。
- 输入拆分列字段名称。
例如,假设您有以下用例:
- 假设您有一个包含 1000 万条记录的表。
- 其中包含一个名为
id
的唯一 ID 列。 - Redshift 集群有 4 个节点。
目标:为了充分发挥集群的潜力,您计划 生成多个分块。为此,请使用以下属性 配置:
在边界查询字段中,输入以下查询:
SELECT MIN(id), MAX(id) FROM tableName
在此查询中,
id
是包含拆分项的列的名称 。在拆分列字段中,输入列名称
id
。输入拆分的数量和提取大小。这些属性是 因此,您可以根据提取大小或 反过来。对于此示例,请输入以下内容。
在拆分数量字段中,输入
40
。在此示例中,其中 表包含 1000 万条记录,每个结果部分创建 40 个分块 包含 250,000 条记录的分块。在提取大小字段中,输入
250,000
。