BigQuery 批处理来源

本页面提供了有关在 Cloud Data Fusion 中配置 BigQuery 批处理来源插件的指导。

借助 BigQuery 源插件,您可以连接到 BigQuery 表并从中加载数据。系统会将 BigQuery 表中的数据导出到 Cloud Storage 中的某个临时位置,然后从该位置将数据读取到流水线中。

准备工作

Cloud Data Fusion 通常有两个服务账号:

在使用 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 存储分区上分配此角色和这些权限,具体取决于您的用例。

配置插件

  1. 前往 Cloud Data Fusion 网页界面,然后点击 Studio
  2. 检查是否已选择 Data Pipeline - Batch(而不是 Realtime)。
  3. 来源菜单中,点击 BigQuery。BigQuery 节点会显示在流水线中。
  4. 如需配置该来源,请前往 BigQuery 节点,然后点击属性
  5. 输入以下属性。如需查看完整列表,请参阅属性

    1. 为 BigQuery 节点输入一个标签,例如 BigQuery tables
    2. 输入连接详情。您可以设置新的一次性连接,也可以设置现有的可重复使用连接。

      新增关联项

      如需向 BigQuery 添加一次性连接,请按以下步骤操作:

      1. 项目 ID 字段中,将值保留为“自动检测”。
      2. 如果 BigQuery 数据集位于其他项目中,请在数据集项目 ID 字段中输入相应 ID。
      3. 服务账号类型字段中,选择以下选项之一,然后在下一个字段中输入相应内容:

        • 文件路径
        • JSON

      可重复使用的连接

      如需重复使用现有连接,请按以下步骤操作:

      1. 开启使用连接
      2. 点击浏览连接
      3. 点击连接名称,例如 BigQuery 默认

      4. 可选:如果不存在关联,并且您想创建新的可重复使用关联,请点击添加关联,然后参阅本页面新关联标签页中的步骤。

    3. 参考名称字段中,输入要用于谱系的名称。

    4. 可选:如果您的数据集已在您的实例中提供,请点击浏览,然后选择要读取的数据。

    5. 数据集字段中,输入包含该表的数据集的名称。

    6. 字段中,输入表的名称。

    7. 如需测试连接,请点击获取架构

    8. 可选:在分区开始日期字段中,输入包含开始日期的字符串,例如 2021-01-11

    9. 可选:在分区结束日期字段中,输入包含结束日期的字符串,例如 2024-01-11

    10. 可选:在过滤字段中,输入 BigQuery WHERE 子句

    11. 可选:在临时存储分区名称字段中,输入 Cloud Storage 存储分区的名称。

    12. 可选:在加密密钥名称字段中,输入 Cloud Key Management Service (Cloud KMS) 加密密钥名称。如需了解详情,请参阅获取密钥的资源名称

    13. 可选:开启启用查询视图。如果您启用这些功能,请执行以下操作:

      • 临时表创建项目字段中,输入创建临时表的项目名称。
      • 临时表创建数据集字段中,输入要创建临时表的数据集名称。
    14. 可选:点击验证,然后解决发现的所有错误。

    15. 点击 关闭。系统会保存属性,然后您可以在 Cloud Data Fusion 网页界面中继续构建数据流水线。

属性

属性 已启用宏 必需属性 说明
标签 数据流水线中相应节点的名称。
使用连接 浏览可重复使用的来源连接。如需详细了解如何添加、导入和修改浏览连接时显示的连接,请参阅管理连接
连接 如果使用连接处于开启状态,您选择的可重复使用连接的名称会显示在此字段中。
项目 ID 仅在使用连接处于关闭状态时使用。BigQuery 作业运行所在项目的全球唯一标识符。
默认为 auto-detect
数据集项目 ID 仅在使用连接处于关闭状态时使用。如果数据集位于与运行 BigQuery 作业的项目不同的项目中,此值为包含 BigQuery 数据集的项目的全局唯一标识符。如果未指定任何值,则该字段默认为 Project ID 值。必须向指定的服务账号授予 BigQuery Data Viewer 角色,才能读取项目中的 BigQuery 数据。
服务账号类型 从下列选项中选择一项:
  • 文件路径:服务账号所在的路径。
  • JSON:服务账号的 JSON 内容。
服务账号文件路径 仅当服务账号类型值为文件路径时使用。用于授权的服务账号密钥在本地文件系统中的路径。如果作业在 Dataproc 集群上运行,请将此值设置为“auto-detect”。如果作业在其他类型的集群上运行,该文件必须存在于集群中的每个节点上。
默认值为 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 视图默认处于停用状态,因此查询它们可能会产生性能开销。
默认值为“否”。
临时表创建项目 仅当启用查询视图处于开启状态时才使用。应在其中创建临时表的项目名称。默认为表所在的项目。
临时表创建数据集 应在其中创建临时表的指定项目中的数据集。默认为表所在的数据集。
输出架构 要读取的表的架构。您可以点击获取架构来提取该架构。

数据类型映射

下表列出了 BigQuery 数据类型及其对应的 CDAP 类型。

BigQuery 数据类型 CDAP 架构数据类型
BOOL boolean
BYTES bytes
DATE date
DATETIME datetime, string
FLOAT64 double
GEO unsupported
INT64 long
NUMERIC decimal
BIGNUMERIC decimal
REPEATED array
STRING stringdatetime(ISO 8601 格式)
STRUCT record
TIME time(微秒)
TIMESTAMP timestamp(微秒)
JSON unsupported

后续步骤