借助 BigQuery 来源插件,您可以从 BigQuery 表连接和加载数据。BigQuery 表中的数据将导出到 Cloud Storage 中的临时位置,然后从该位置被读入流水线。
准备工作
Cloud Data Fusion 通常有两个服务帐号:
- 设计时服务帐号:Cloud Data Fusion API Service Agent
- 执行时服务帐号:Compute Engine 服务帐号
在使用 BigQuery 批量来源插件之前,请向每个服务帐号授予以下角色或权限。
Cloud Data Fusion API Service Agent
此服务帐号已具有所有必需的权限,您无需添加其他权限。该角色具有以下权限,供您参考:
bigquery.datasets.get
bigquery.tables.create
bigquery.tables.get
bigquery.tables.updateData
bigquery.tables.update
bigquery.tables.export
如果除了默认设计时服务帐号之外,您还使用命名空间服务帐号,请将上述列表中的权限添加到该帐号。
Compute Engine 服务账号
在 Google Cloud 项目中,向 Compute Engine 服务帐号授予以下 IAM 角色或权限:
- BigQuery Job User (
roles/bigquery.jobUser
)。此预定义角色包含所需的bigquery.jobs.create
权限。 BigQuery Data Editor (
roles/bigquery.dataEditor
)。此预定义角色包含以下必需权限:bigquery.datasets.get
bigquery.tables.create
bigquery.tables.get
bigquery.tables.updateData
bigquery.tables.update
bigquery.tables.export
根据您的使用场景,还可以针对 BigQuery 数据集或表分配这些角色和权限。
Storage Legacy Bucket Writer (
roles/storage.legacyBucketWriter
)。此预定义角色包含以下必需权限:storage.buckets.get
storage.objects.get
storage.objects.list
根据您的使用场景,还可以在 Cloud Storage 存储桶上分配此角色和这些权限。
配置插件
- 转到 Cloud Data Fusion 网页界面,然后点击 Studio。
- 检查是否已选择 Data Pipeline - Batch(而非实时)。
- 在来源菜单中,点击 BigQuery。BigQuery 节点随即会显示在您的流水线中。
- 如需配置来源,请转到 BigQuery 节点,然后点击属性。
输入以下属性。如需查看完整列表,请参阅属性。
- 为 BigQuery 节点输入标签,例如
BigQuery tables
。 输入连接详情。您可以设置新的一次性连接,也可以设置可重复使用的现有连接。
新增关联项
如需添加与 BigQuery 的一次性连接,请按以下步骤操作:
- 在项目 ID 字段中,将值保留为“自动检测”。
- 如果 BigQuery 数据集位于其他项目中,请在数据集项目 ID 字段中输入该 ID。
在服务帐号类型字段中,选择以下选项之一,然后在下一个字段中输入内容:
- 文件路径
- JSON
可重复使用的连接
要重复使用现有连接,请按以下步骤操作:
- 开启使用网络连接。
- 点击浏览连接。
点击连接名称,例如 BigQuery Default。
可选:如果连接不存在,并且您想要创建新的可重复使用的连接,请点击添加连接,然后参阅本页面上新建连接标签页中的步骤。
在引用名称字段中,输入用于沿袭的名称。
可选:如果实例中已有数据集,请点击浏览,然后选择要读取的数据。
在数据集字段中,输入包含该表的数据集的名称。
在表字段中,输入表的名称。
如需测试连接,请点击获取架构。
可选:在 Partition start date 字段中,输入包含的开始日期字符串,例如
2021-01-11
。可选:在 Partition end date 字段中,输入包含边界的结束日期字符串,例如
2024-01-11
。可选:在过滤条件字段中,输入 BigQuery
WHERE
子句。可选:在临时存储桶名称字段中,输入 Cloud Storage 存储桶的名称。
可选:在加密密钥名称字段中,输入 Cloud Key Management Service (Cloud KMS) 加密密钥名称。如需了解详情,请参阅获取密钥的资源名称。
可选:开启启用查询视图。如果要启用它们,请执行以下操作:
- 在临时表创建项目字段中,输入创建临时表的项目名称。
- 在临时表创建数据集字段中,输入创建临时表的数据集名称。
可选:点击验证,并解决发现的所有错误。
点击
Close。属性已保存,您可以继续在 Cloud Data Fusion 网页界面中构建数据流水线。
- 为 BigQuery 节点输入标签,例如
属性
属性 | 已启用宏 | 必需属性 | 说明 |
---|---|---|---|
标签 | 否 | 是 | 数据流水线中节点的名称。 |
使用连接 | 否 | 否 | 浏览以查找可重复使用的来源连接。如需详细了解如何添加、导入和修改连接时显示的连接,请参阅管理连接。 |
连接 | 是 | 是 | 如果 Use connection 处于开启状态,您选择的可重复使用的连接的名称将显示在此字段中。 |
项目 ID | 是 | 否 | 仅在使用连接处于关闭状态时使用。运行 BigQuery 作业的项目的全局唯一标识符。 默认值为 auto-detect 。 |
数据集项目 ID | 是 | 否 | 仅在使用连接关闭时使用。如果数据集不属于运行 BigQuery 作业的项目,则此值是包含 BigQuery 数据集的项目的全局唯一标识符。如果未指定值,则该字段默认为项目 ID 值。必须将 BigQuery Data Viewer 角色授予指定服务帐号才能读取项目的 BigQuery 数据。 |
服务帐号类型 | 是 | 否 | 从下列选项中选择一项:
|
服务账号文件路径 | 是 | 否 | 仅在服务账号类型值为文件路径时使用。用于授权的服务帐号密钥的本地文件系统上的路径。如果作业在 Dataproc 集群上运行,请将该值设置为自动检测。如果作业在其他类型的集群上运行,则该文件必须存在于集群中的每个节点上。 默认值为 auto-detect 。 |
服务帐号 JSON | 是 | 否 | 仅在服务帐号类型值为 JSON 时使用。 服务帐号的 JSON 文件内容。 |
参考编号 | 否 | 是 | 名称,用于为其他服务(例如沿袭和注释元数据)唯一标识此来源。 |
数据集 | 是 | 是 | 表所属的数据集。数据集包含在特定项目中。数据集是整理和控制对表和视图的访问权限的顶级容器。 |
表格 | 是 | 是 | 要读取的表。一个表包含按行整理的各条记录。每条记录都由列(也称为字段)组成。每个表由描述列名称、数据类型和其他信息的架构进行定义。 |
分区开始日期 | 是 | 否 | 包含性分区的开始日期,指定为 yyyy-mm-dd 。如果未指定值,系统将读取截至分区结束日期的所有分区。 |
分区结束日期 | 是 | 否 | 独占分区结束日期,指定为 yyyy-mm-dd 。如果未指定值,则读取自分区开始日期起的所有分区。 |
过滤 | 是 | 否 | 针对给定条件进行过滤的 SQL 查询。例如,以下查询会返回 Roster 表中 SchoolID 列值为 SchoolID > 52 的所有行:SELECT * FROM Roster WHERE SchoolID > 52; 。这与 BigQuery 中的 WHERE 子句相同。 |
临时存储桶名称 | 是 | 否 | 用于临时存储数据的 Cloud Storage 存储桶。如果该清单不存在,则系统会自动创建一个。读取完临时数据后,系统会将其删除。如果未提供名称,系统会创建一个唯一的存储桶,然后在运行完成后将其删除。 |
加密密钥名称 | 是 | 否 | 用于加密写入插件创建的任何存储桶的数据的密钥。如果存储桶存在,则忽略此值。如需了解详情,请参阅 CMEK。 |
启用查询视图 | 是 | 否 | 是否允许 BigQuery 逻辑视图和具体化视图。由于默认情况下未启用 BigQuery 视图,因此查询此类视图可能会产生性能开销。 默认值为“否”。 |
临时表创建项目 | 是 | 否 | 仅在启用查询视图处于启用状态时使用。应在其中创建临时表的项目名称。默认为表所属的项目。 |
临时表创建数据集 | 是 | 否 | 指定项目中应创建临时表的数据集。默认为表所在的同一数据集。 |
输出架构 | 是 | 是 | 要读取的表的架构。您可以通过点击获取架构来获取该架构。 |
数据类型映射
下表列出了具有相应 CDAP 类型的 BigQuery 数据类型。
BigQuery 数据类型 | CDAP 架构数据类型 |
---|---|
BOOL |
boolean |
BYTES |
bytes |
DATE |
date |
DATETIME |
datetime, string |
FLOAT64 |
double |
GEO |
unsupported |
INT64 |
long |
NUMERIC |
decimal |
BIGNUMERIC |
decimal |
REPEATED |
array |
STRING |
string 、datetime (ISO 8601 格式) |
STRUCT |
record |
TIME |
time (微秒) |
TIMESTAMP |
timestamp (微秒) |
JSON |
unsupported |
后续步骤
- 详细了解 Cloud Data Fusion 中的插件。