在 BigQuery 中執行轉換

本頁面說明如何在 Cloud Data Fusion 中,對 BigQuery 執行轉換作業,而非 Spark。

詳情請參閱轉換下推總覽

事前準備

轉換下推功能適用於 6.5.0 以上版本。如果管道是在舊版環境中執行,您可以將執行個體升級至最新版本。

在管道上啟用轉換下推功能

控制台

如要在已部署的管道上啟用轉換下推功能,請執行下列步驟:

  1. 前往執行個體:

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

    2. 如要在 Cloud Data Fusion Studio 中開啟執行個體,請依序按一下「Instances」和「View instance」

      前往「Instances」(執行個體)

  2. 依序按一下 「選單」> 「清單」

    系統會開啟已部署的管道分頁。

  3. 按一下所需的已部署管道,即可在管道工作室中開啟。

  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 bucket。 如果不存在,系統會自動建立,但不會自動刪除。Cloud Storage 資料載入 BigQuery 後就會遭到刪除。如果未提供這個值,系統會建立專屬 bucket,並在管道執行完成後刪除。服務帳戶必須有權在設定的專案中建立值區。
位置 6.5.0 建立 BigQuery 資料集的位置。 如果資料集或暫時儲存空間已存在,系統會忽略這個值。預設為US多區域。
加密金鑰名稱 6.5.1/0.18.1 客戶自行管理的加密金鑰 (CMEK),用於加密外掛程式建立的任何 Bucket、資料集或資料表所寫入的資料。如果 bucket、資料集或資料表已存在,系統會忽略這個值。
完成後保留 BigQuery 資料表 6.5.0 是否保留在管道執行期間建立的所有 BigQuery 臨時資料表,以利進行偵錯和驗證。預設值為「否」
臨時資料表存留時間 (以小時為單位) 6.5.0 以小時為單位,設定 BigQuery 臨時資料表的資料表 TTL。如果管道遭到取消,且清除程序中斷 (例如執行叢集突然關閉),這項功能可做為安全機制。將這個值設為 0 即可停用資料表 TTL。預設值為 72 (3 天)。
工作優先順序 6.5.0 執行 BigQuery 工作時使用的優先順序。選取下列其中一個選項:
  1. 批次:批次工作會排入佇列,一等到閒置資源可供使用就會啟動,通常幾分鐘內就會啟動。如果工作在三小時內未啟動,系統會將優先順序切換為互動式。
  2. 互動式:系統會盡快執行互動式工作,並計入並行頻率限制和每日頻率限制。
預設值為「Batch」(批次)
強制下推的階段 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 下推管道指標」。

後續步驟