设置 Openflow Connector for Google BigQuery¶
备注
此连接器受 Snowflake 连接器条款 的约束。
本主题介绍设置 Openflow Connector for Google BigQuery 的步骤。
先决条件¶
所需端点¶
连接器需要以下端点才能运行:
bigquery.googleapis.com:443bigquerystorage.googleapis.com:443oauth2.googleapis.com:443
如果您使用的是 Openflow – BYOC,则需要配置云网络出口,以允许通过 TLS 443 访问上述端点。如果您使用的是 Openflow - Snowflake Deployments,则需要创建网络规则和外部访问集 (EAI)。然后,向该 EAI 授予 Snowflake 角色的使用权限。
设置 BigQuery¶
创建 Google Cloud 服务账户并授予其读取 BigQuery 数据所需的权限。连接器使用此账户进行身份验证。
此账户必须具有以下权限:
BigQuery User (https://docs.cloud.google.com/bigquery/docs/access-control#bigquery.user)
BigQuery Data Editor (https://docs.cloud.google.com/bigquery/docs/access-control#bigquery.dataEditor)
重要
BigQuery Data Editor必须在 项目级别 授予,而不是在单个数据集上授予。连接器查询{project}.{region}.INFORMATION_SCHEMA.TABLES以发现所有已配置区域中的表(这是一个区域范围视图,需要项目级别的访问权限)。连接器还会查询{project}.{dataset}.INFORMATION_SCHEMA.KEY_COLUMN_USAGE以确定每个复制表的主键。如果没有项目级别的访问权限,查询将失败并显示Access Denied错误,且连接器将无法正常运行。
为服务账户生成并下载相应的 JSON 密钥文件。在连接器的配置中,您将需要该文件的完整内容。
在每个源表上启用更改历史记录,以允许连接器执行增量复制。此功能使 BigQuery 能够跟踪行级更改(插入、更新和删除),连接器利用这些更改来高效同步数据。
在 BigQuery 控制台中为每个表运行以下查询:
设置您的 Snowflake 账户¶
作为 Openflow 管理员,请执行以下任务来设置您的 Snowflake 账户:
创建 Snowflake 服务用户:
将用户的私钥存储在文件中,以提供给连接器的配置。有关更多信息,请参阅 密钥对身份验证。
创建一个用于存储复制数据的数据库,并通过授予 USAGE 和 CREATE SCHEMA 权限,为该 Snowflake 用户设置在该数据库中创建对象的权限。
为连接器创建一个新的仓库或使用现有仓库。
要创建新仓库,请执行以下步骤:
从 MEDIUM 仓库规模开始,然后根据要复制的表的数量和传输的数据量尝试规模。
要判断是否需要增加仓库规模,请在数据复制进行时监控连接器和数据库。如果在增量复制过程中观察到显著延迟,可尝试使用更大的仓库规格。然而,相较于扩大仓库规模,采用 多集群仓库 通常能更有效地应对海量表数量的扩展需求。
创建外部访问集成,以启用 Snowflake 外部的网络访问。
小心
如果您的运行时在 Openflow – BYOC 中执行,则无需创建外部访问集成 (EAI)。您应改为配置云网络出口,允许通过 TLS 443 访问下列端点。
所需的“主机:端口”端点列在 所需端点 部分中。
要允许连接器从 Snowflake 托管的运行时调用所需的 Google APIs,您必须创建一个网络规则和一个外部访问集成 (EAI)。然后,向该 EAI 授予 Snowflake 角色的使用权限。
要创建外部访问集成和网络规则并授予访问权限,请执行以下步骤:
创建一个网络规则,以允许连接器访问所需的 Google APIs:
创建引用网络规则的外部访问集成:
向您的 Snowflake 角色授予对该集成的 USAGE 权限:
安装连接器¶
要安装连接器,请以数据工程师身份执行以下操作:
导航到 Openflow“Overview”页面。在 Featured connectors 部分中,选择 View more connectors。
在 Openflow 连接器页面上,找到连接器并选择 Add to runtime。
在 Select runtime 对话框中,从 Available runtimes 下拉列表中选择您的运行时,然后点击 Add。
备注
在安装连接器之前,请确保在 Snowflake 中为连接器创建了数据库和架构,用于存储引入的数据。
使用您的 Snowflake 账户凭据对部署进行身份验证,并在系统提示时选择 Allow,以允许运行时应用程序访问您的 Snowflake 账户。连接器安装过程需要几分钟才能完成。
使用您的 Snowflake 账户凭据进行运行时身份验证。
此时将显示 Openflow 画布,其中添加了连接器进程组。
配置连接器¶
要配置连接器,请执行以下步骤:
右键点击已添加的运行时,然后选择 Parameters。
按照 指定流参数 所述填充所需的参数值。
指定流参数¶
本部分介绍您可以根据以下参数上下文配置的流参数:
BigQuery 源参数:用于定义从 BigQuery 读取数据的配置。
BigQuery 目标参数:用于与 Snowflake 建立连接。
BigQuery 引入参数:用于指定要复制的表和视图。
BigQuery 源参数¶
参数 |
描述 |
|---|---|
BigQuery 项目名称 |
包含 BigQuery 数据集和表的 Google Cloud 项目的唯一标识符。 查找位置:打开 BigQuery Studio (Google Cloud Console > BigQuery),在左侧的“Explorer”窗格中,将鼠标悬停在您的项目上以查看项目 ID。 示例: |
GCP 服务账户 JSON |
用于身份验证的 Google Cloud Platform 服务账户的 JSON 密钥文件的全部内容。确保该服务账户具备执行 BigQuery 操作所需的 IAM 权限,例如 BigQuery Job User 和 BigQuery Data Viewer 角色。 获取路径:Google Cloud Console> IAM & Admin > Service Accounts > 选择服务账户 > Keys 标签页 > Add key > Create new key > JSON。这将下载一个 .json 文件,打开该文件并将整个文件内容(包括花括号)粘贴到此字段中。 |
BigQuery 目标参数¶
参数 |
描述 |
|---|---|
Snowflake 身份验证策略 |
使用 SPCS 时,请将 SNOWFLAKE_SESSION_TOKEN 用作身份验证策略的值。使用 BYOC 时,请将 KEY_PAIR 用作身份验证策略的值。 示例: |
Snowflake 账户标识符 |
使用以下方式时:
|
目标数据库 |
要复制到的目标数据库的名称。支持混合大小写。 |
Snowflake 私钥文件 |
使用以下方式时:
|
Snowflake 私钥密码 |
使用以下方式时:
|
Snowflake 角色 |
使用以下方式时:
|
Snowflake 用户名 |
使用以下方式时:
|
Snowflake 仓库 |
连接器要使用的仓库名称。 |
BigQuery 引入参数¶
参数 |
描述 |
|---|---|
BigQuery 区域 |
指定一个以逗号分隔的位置列表,用于查询 BigQuery 数据集。您可以在同一列表中同时包含区域级和多区域级位置。 示例: |
包括数据集名称 |
以逗号分隔的要复制的数据集列表(在所有选定区域中查询)。 示例: |
包括数据集名称正则表达式 |
用于指定要复制的数据集名称的正则表达式(在所有选定区域中查询)。与“包含的数据集名称”结合使用,以包含任何匹配的数据集。注意:REGEXP 表达式应符合 Google 的 RE2 语法。 示例: |
包括表名 |
以逗号分隔的要跨数据集复制的表列表。 示例: |
包括表名正则表达式 |
用于指定要跨数据集复制的表名称的正则表达式。与“包括表名”结合使用,以包含任何匹配的表。注意:REGEXP 表达式应符合 Google 的 RE2 语法。 示例: |
包括视图名称 |
以逗号分隔的要跨数据集复制的视图列表。 示例: |
包括视图名称正则表达式 |
用于指定要跨数据集复制的视图名称的正则表达式。与“包括视图名称”结合使用,以包含任何匹配的视图。注意:REGEXP 表达式应符合 Google 的 RE2 语法。 示例: |
增量同步频率 |
连接器对每个表运行增量同步的频率。如果同步周期长于配置的间隔,则运行不会重叠,下一次运行将等待前一次运行完成。由于 BigQuery 将窗口的最大大小限制为 24 小时,因此调度频率必须比该值更频繁。 示例: |
视图同步频率 |
连接器对每个视图运行同步的频率。如果同步周期长于配置的间隔,则运行不会重叠,下一次运行将等待前一次运行完成。视图引入不支持 CDC,仅支持截断并加载。 示例: |
临时表数据集 |
用于创建必要临时表的数据集,例如 CDC 日志表或用于视图引入的临时表。Snowflake 建议为临时表使用单独的数据集,而不应为此目的使用已引入数据集。 示例: |
运行流¶
右键点击“飞机”图标并选择 Enable all Controller Services。
右键点击导入的进程组并选择 Start。连接器开始数据引入。