在 BigQuery 中执行转换

本页面介绍如何在 Cloud Data Fusion 中将转换推送到 BigQuery(而不是 Spark)。

如需了解详情,请参阅 转换下推概览。

准备工作

转换推送在 6.5.0 及更高版本中可用。如果您的 流水线在较早的环境中运行,则可以将 实例升级到最新 版本。

在流水线上启用转换推送功能

控制台

如需在已部署的流水线上启用转换下推功能,请执行以下操作:

  1. 前往您的实例:

    1. 在 Google Cloud 控制台中,前往 Cloud Data Fusion 页面。

    2. 如需在 Cloud Data Fusion Studio 中打开实例,请点击实例,然后点击查看实例。

      转到实例

  2. 依次点击 菜单 > 列表 。

    系统会打开已部署的流水线标签页。

  3. 点击所需的已部署流水线,以在 Pipeline Studio 中将其打开。

  4. 点击配置 > 转换推送。

    启用转换推送。

  5. 点击启用转换推送 。

  6. 在数据集 字段中,输入 BigQuery 数据集名称。

    可选:如需使用宏,请点击 M 。如需了解详情,请参阅 数据集。

  7. 可选:根据需要配置选项。

  8. 点击保存 。

可选配置

.
属性 支持宏 支持的 Cloud Data Fusion 版本 说明
使用连接 否 6.7.0 及更高版本 是否使用现有连接。
连接 是 6.7.0 及更高版本 连接的名称。此连接提供项目和 服务帐号信息。
可选:使用宏函数 ${conn(connection_name)}。
数据集项目 ID 是 6.5.0 如果数据集与 BigQuery 作业运行的项目不同,请输入数据集的项目 ID。如果未提供任何值,则默认使用作业运行的项目 ID。
项目 ID 是 6.5.0 项目 ID。 Google Cloud
服务账号类型 是 6.5.0 选择以下选项之一:
  • 文件路径:服务帐号的文件路径。
  • JSON:服务帐号的 JSON 内容。
默认值为 JSON 。
服务账号文件路径 是 6.5.0 用于授权的服务帐号密钥在本地文件系统中的路径 。在 Managed Service for Apache Spark 集群上运行时,系统会将其设置为 auto-detect。在其他集群上运行时, 该文件必须存在于集群中的每个节点上。默认值为 auto-detect。
服务账号 JSON 是 6.5.0 服务帐号 JSON 文件的内容。
临时存储分区名称 是 6.5.0 存储临时数据的 Cloud Storage 存储桶。 如果该存储分区不存在,系统会自动创建,但不会 自动删除。Cloud Storage 数据加载到 BigQuery 后将被删除 。如果未提供此值,则系统会创建唯一存储桶,然后在流水线运行完成后将其删除。该服务帐号必须有权在配置的项目中创建存储分区 在配置的项目中。
位置 是 6.5.0 BigQuery 数据集的创建位置。 如果数据集或临时存储桶已 存在,则系统会忽略此值。默认值为 US 多区域。
加密密钥名称 是 6.5.1/0.18.1 客户管理的加密密钥 (CMEK),用于加密写入由插件创建的任何存储桶、数据集或表的数据。如果 存储桶、数据集或表已存在,系统会忽略此值。
在完成后保留 BigQuery 表 是 6.5.0 是否保留流水线运行期间创建的所有 BigQuery 临时表 ,以用于调试和 验证。默认值为否 。
临时表 TTL(小时) 是 6.5.0 为 BigQuery 临时表设置表 TTL(以 小时为单位)。在流水线 取消且清理过程中断时(例如,在 执行集群突然关闭时),可将其用作故障安全机制。将此值设置为 0 会停用表 TTL。默认值为 72(3 天)。
作业优先级 是 6.5.0 用于执行 BigQuery 作业的优先级。选择以下选项之一:
  1. 批量:批量作业会先行排队,一旦有闲置资源可用就会启动,通常在几分钟之内。如果作业在三小时内未启动,其 优先级将切换为交互式。
  2. 交互式:交互式作业会尽快执行,并计入并发速率限制和每日速率限制。
默认值为批量 。
强制下推的阶段 是 6.7.0 始终在 BigQuery 中执行的受支持阶段。 每个阶段名称必须位于单独一行。
跳过下推式广告的阶段 是 6.7.0 绝不在 BigQuery 中执行的受支持阶段。每个 阶段名称必须位于单独一行。
使用 BigQuery Storage Read API 是 6.7.0 在流水线执行期间从 BigQuery 提取记录 时,是否使用 BigQuery Storage Read API。此选项 可以提高转换推送的性能,但会产生 额外费用。这需要在 执行环境中安装 Scala 2.12。

在日志中监控性能变化

流水线运行时日志包含显示 BigQuery 中运行的 SQL 查询的消息。您可以监控流水线中的哪些阶段会被推送到 BigQuery。

以下示例显示了流水线执行开始时的日志条目。这些日志表明流水线中的 JOIN 操作已被推送到 BigQuery 以执行:

  INFO  [Driver:i.c.p.g.b.s.BigQuerySQLEngine@190] - Validating join for stage 'Users' can be executed on BigQuery: true
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@131] - Starting push for dataset 'UserProfile'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@131] - Starting push for dataset 'UserDetails'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@292] - Starting join for dataset 'Users'
  INFO  [Driver:i.c.p.g.b.s.BigQuerySQLEngine@190] - Validating join for stage 'UserPurchases' can be executed on BigQuery: true
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@131] - Starting push for dataset 'Purchases'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@292] - Starting join for dataset 'UserPurchases'
  INFO  [Driver:i.c.p.g.b.s.BigQuerySQLEngine@190] - Validating join for stage 'MostPopularNames' can be executed on BigQuery: true
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@131] - Starting push for dataset 'FirstNameCounts'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@292] - Starting join for dataset 'MostPopularNames'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@193] - Starting pull for dataset 'MostPopularNames'

以下示例展示了将为下推执行中涉及的每个数据集分配的表名称:

  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@145] - Executing Push operation for dataset Purchases stored in table <TABLE_ID>
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@145] - Executing Push operation for dataset UserDetails stored in table <TABLE_ID>
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@145] - Executing Push operation for dataset FirstNameCounts stored in table <TABLE_ID>
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@145] - Executing Push operation for dataset UserProfile stored in table <TABLE_ID>

随着执行操作的持续,日志会显示推送阶段的完成情况,并最终执行 JOIN 操作。例如:

  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@133] - Completed push for dataset 'UserProfile'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@133] - Completed push for dataset 'UserDetails'
  DEBUG [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@235] - Executing join operation for dataset Users
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQueryJoinDataset@118] - Creating table `<TABLE_ID>` using job: <JOB_ID> with SQL statement: SELECT `UserDetails`.id AS `id` , `UserDetails`.first_name AS `first_name` , `UserDetails`.last_name AS `last_name` , `UserDetails`.email AS `email` , `UserProfile`.phone AS `phone` , `UserProfile`.profession AS `profession` , `UserProfile`.age AS `age` , `UserProfile`.address AS `address` , `UserProfile`.score AS `score` FROM `your_project.your_dataset.<DATASET_ID>` AS `UserProfile` LEFT JOIN `your_project.your_dataset.<DATASET_ID>` AS `UserDetails` ON `UserProfile`.id = `UserDetails`.id
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQueryJoinDataset@151] - Created BigQuery table `<TABLE_ID>
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@245] - Executed join operation for dataset Users

所有阶段完成后,系统会显示一条消息,表明 Pull 操作已完成。这表示 BigQuery 导出过程已触发,并且在此导出作业开始后,记录将开始读取到流水线中。例如:

DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@196] - Completed pull for dataset 'MostPopularNames'

如果流水线执行遇到错误,日志中会对此进行说明。

如需详细了解 BigQuery JOIN 操作的执行情况(例如资源利用率、执行时间、错误原因等),您可以使用在作业日志中找到的任务 ID 查看 BigQuery 作业数据。

查看流水线指标

如需详细了解 Cloud Data Fusion 为 在 BigQuery 中执行的流水线部分提供的指标,请参阅 BigQuery 推送流水线指标。

后续步骤