BigQuery 到 Clickhouse 範本

「BigQuery 到 Clickhouse」範本是一個批次管道,可將資料從 BigQuery 資料表複製到現有的 Clickhouse 資料表。範本可以讀取整個資料表,也可以使用提供的查詢讀取特定記錄。

管道相關規定

  • 來源 BigQuery 資料表必須存在。
  • Clickhouse 資料表必須存在。

範本參數

必要參數

  • jdbcUrl:目標 ClickHouse JDBC 網址,格式為 jdbc:clickhouse://host:port/schema。任何 JDBC 選項都可以加到 JDBC 網址的結尾。例如:jdbc:clickhouse://localhost:8123/default
  • clickHouseUsername:用於驗證的 ClickHouse 使用者名稱。
  • clickHouseTable:要插入資料的目標 ClickHouse 資料表名稱。

選用參數

  • inputTableSpec:要讀取的 BigQuery 資料表。如果您指定 inputTableSpec,範本會使用 BigQuery Storage Read API (https://cloud.google.com/bigquery/docs/reference/storage),直接從 BigQuery 儲存空間讀取資料。如要瞭解 Storage Read API 的限制,請參閱 https://cloud.google.com/bigquery/docs/reference/storage#limitations。你必須指定 inputTableSpecquery。如果您同時設定這兩個參數,範本會使用 query 參數。例如:<BIGQUERY_PROJECT>:<DATASET_NAME>.<INPUT_TABLE>
  • outputDeadletterTable:無法到達輸出資料表的訊息所屬 BigQuery 資料表。如果資料表不存在,系統會在管道執行期間建立。如未指定,則會使用 <outputTableSpec>_error_records。例如:<PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>
  • query:用來從 BigQuery 讀取資料的 SQL 查詢。如果 BigQuery 資料集與 Dataflow 工作位於不同專案,請在 SQL 查詢中指定完整資料集名稱,例如:<PROJECT_ID>.<DATASET_NAME>.<TABLE_NAME>。根據預設,除非 useLegacySqltrue,否則 query 參數會使用 GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql)。你必須指定 inputTableSpecquery。如果您同時設定這兩個參數,範本會使用 query 參數。例如:select * from sampledb.sample_table
  • useLegacySql:設為 true 即可使用舊版 SQL。這個參數僅適用於使用 query 參數的情況。預設值為 false
  • queryLocation:從授權檢視表讀取資料時,如果沒有基礎資料表的權限,就必須提供這個值。例如:US
  • queryTempDataset:使用這個選項,您可以設定現有資料集來建立臨時資料表,以儲存查詢結果。例如:temp_dataset
  • KMSEncryptionKey:如果使用查詢來源從 BigQuery 讀取資料,請使用這個 Cloud KMS 金鑰加密建立的任何暫時性資料表。例如:projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key
  • clickHousePassword:用於驗證的 ClickHouse 密碼。
  • maxInsertBlockSize:插入的區塊大小上限 (如果我們控管插入區塊的建立作業 (ClickHouseIO 選項))。
  • insertDistributedSync:如果啟用這項設定,插入查詢會進入分散式等待狀態,直到資料傳送至叢集中的所有節點為止。(ClickHouseIO 選項)。
  • insertQuorum:針對複寫資料表中的 INSERT 查詢,等待寫入指定數量的副本,並將資料新增作業線性化。0 - 已停用。 這項設定預設會在伺服器設定 (ClickHouseIO 選項) 中停用。
  • insertDeduplicate:針對複寫資料表中的 INSERT 查詢,指定應執行插入區塊的重複資料刪除作業。
  • maxRetries:每次插入作業的重試次數上限。

執行範本

控制台

  1. 前往 Dataflow 的「Create job from template」(透過範本建立工作) 頁面。
  2. 前往「依據範本建立工作」
  3. 在「工作名稱」欄位中,輸入專屬工作名稱。
  4. 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為 us-central1

    如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。

  5. 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the BigQuery to Clickhouse template。
  6. 在提供的參數欄位中輸入參數值。
  7. 按一下「Run Job」(執行工作)

gcloud

在殼層或終端機中執行範本:

gcloud dataflow flex-template run JOB_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/BigQuery_to_Clickhouse \
    --parameters \
jdbcUrl=JDBC_URL,\
clickHouseUsername=CLICKHOUSE_USERNAME,\
clickHouseTable=CLICKHOUSE_TABLE

更改下列內容:

  • PROJECT_ID: 您要執行 Dataflow 工作的專案 ID Google Cloud
  • JOB_NAME: 您選擇的不重複工作名稱
  • REGION_NAME: 您要部署 Dataflow 工作的地區,例如 us-central1
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • JDBC_URL:您的 JDBC 網址。
  • CLICKHOUSE_USERNAME:Clickhouse 使用者名稱。
  • CLICKHOUSE_TABLE:Clickhouse 資料表。

API

如要使用 REST API 執行範本,請傳送 HTTP POST 要求。如要進一步瞭解 API 和授權範圍,請參閱 projects.templates.launch

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launch_parameter": {
      "jobName": "JOB_NAME",
      "parameters": {
          "jdbcUrl": "JDBC_URL",
          "clickHouseUsername": "CLICKHOUSE_USERNAME",
          "clickHouseTable": "CLICKHOUSE_TABLE"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/BigQuery_to_Clickhouse",
   }
}

更改下列內容:

  • PROJECT_ID: 您要執行 Dataflow 工作的專案 ID Google Cloud
  • JOB_NAME: 您選擇的不重複工作名稱
  • LOCATION: 您要部署 Dataflow 工作的地區,例如 us-central1
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • JDBC_URL:您的 JDBC 網址。
  • CLICKHOUSE_USERNAME:Clickhouse 使用者名稱。
  • CLICKHOUSE_TABLE:Clickhouse 資料表。

後續步驟