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. 检查是否已选择数据流水线 - 批量(而非实时)。
  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 仅在关闭使用连接时使用。如果数据集所在的项目的 ID 与运行 BigQuery 作业的项目 ID 不同,则此值为包含 BigQuery 数据集的项目的全局唯一标识符。如果未提供值,则该字段默认为项目 ID 值。必须向指定的服务账号授予 BigQuery Data Viewer 角色,才能读取项目中的 BigQuery 数据。
服务账号类型 选择以下某个选项:
  • 文件路径:服务账号所在的路径。
  • JSON:服务账号的 JSON 内容。
服务账号文件路径 仅当服务账号类型值为文件路径时使用。用于授权的服务账号密钥在本地文件系统中的路径。如果作业在 Managed Service for Apache Spark 集群上运行,请将该值设置为自动检测。如果作业在其他类型的集群上运行,则该文件必须存在于集群中的每个节点上。
默认值为 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

后续步骤