「BigQuery 到 Bigtable」範本是一個批次管道,可將資料從 BigQuery 資料表複製到現有的 Bigtable 資料表。範本可以讀取整個資料表,也可以使用提供的查詢讀取特定記錄。
管道相關規定
- 來源 BigQuery 資料表必須存在。
- Bigtable 資料表必須存在。
- 工作者服務帳戶需要
roles/bigquery.datasets.create
權限。詳情請參閱「身分與存取權管理簡介」。
範本參數
必要參數
- readIdColumn:BigQuery 資料欄的名稱,用於儲存資料列的專屬 ID。
- bigtableWriteInstanceId:包含資料表的 Bigtable 執行個體 ID。
- bigtableWriteTableId:要寫入資料的 Bigtable 表格 ID。
- bigtableWriteColumnFamily:要寫入資料的 Bigtable 資料表資料欄系列名稱。
選用參數
- 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。你必須指定inputTableSpec
或query
。如果您同時設定這兩個參數,範本會使用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>。根據預設,除非
useLegacySql
為true
,否則query
參數會使用 GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql)。你必須指定inputTableSpec
或query
。如果您同時設定這兩個參數,範本會使用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
。 - bigtableRpcAttemptTimeoutMs:每次 Bigtable RPC 嘗試的逾時時間 (以毫秒為單位)。
- bigtableRpcTimeoutMs:Bigtable RPC 作業的總逾時時間,以毫秒為單位。
- bigtableAdditionalRetryCodes:其他重試代碼。例如:
RESOURCE_EXHAUSTED,DEADLINE_EXCEEDED
。 - bigtableWriteAppProfile:用於匯出的 Bigtable 應用程式設定檔 ID。如果您未指定應用程式設定檔,Bigtable 會使用執行個體的預設應用程式設定檔 (https://cloud.google.com/bigtable/docs/app-profiles#default-app-profile)。
- bigtableWriteProjectId:包含要寫入資料的 Bigtable 執行個體的 Google Cloud 專案 ID。
- bigtableBulkWriteLatencyTargetMs:Bigtable 的延遲目標 (以毫秒為單位),用於根據延遲時間進行節流。
- bigtableBulkWriteMaxRowKeyCount:Bigtable 批次寫入作業中的資料列金鑰數量上限。
- bigtableBulkWriteMaxRequestSizeBytes:每個 Bigtable 批次寫入作業可包含的位元組數上限。
執行範本
控制台
- 前往 Dataflow 的「Create job from template」(透過範本建立工作) 頁面。 前往「依據範本建立工作」
- 在「工作名稱」欄位中,輸入專屬工作名稱。
- 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為
us-central1
。如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。
- 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the BigQuery to Bigtable template。
- 在提供的參數欄位中輸入參數值。
- 按一下「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_Bigtable \ --parameters \ readIdColumn=READ_COLUMN_ID,\ inputTableSpec=INPUT_TABLE_SPEC,\ bigtableWriteInstanceId=BIGTABLE_INSTANCE_ID,\ bigtableWriteTableId=BIGTABLE_TABLE_ID,\ bigtableWriteColumnFamily=BIGTABLE_COLUMN_FAMILY
更改下列內容:
PROJECT_ID
: 您要執行 Dataflow 工作的專案 ID Google CloudJOB_NAME
: 您選擇的不重複工作名稱REGION_NAME
: 您要部署 Dataflow 工作的地區,例如us-central1
VERSION
: 您要使用的範本版本您可以使用下列值:
latest
,使用範本的最新版本,該版本位於值區中非依日期命名的上層資料夾:gs://dataflow-templates-REGION_NAME/latest/- 版本名稱 (例如
2023-09-12-00_RC00
),用於指定範本版本,該版本會以巢狀結構存放在值區中依日期命名的上層資料夾中:gs://dataflow-templates-REGION_NAME/
READ_COLUMN_ID
:BigQuery 的專屬 ID 資料欄。INPUT_TABLE_SPEC
:您的 BigQuery 資料表名稱。BIGTABLE_INSTANCE_ID
:您的 Bigtable 執行個體 ID。BIGTABLE_TABLE_ID
:您的 Bigtable 資料表 ID。BIGTABLE_COLUMN_FAMILY
:您的 Bigtable 資料表資料欄系列。
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": { "readIdColumn": "READ_COLUMN_ID", "inputTableSpec": "INPUT_TABLE_SPEC", "bigtableWriteInstanceId": "BIGTABLE_INSTANCE_ID", "bigtableWriteTableId": "BIGTABLE_TABLE_ID", "bigtableWriteColumnFamily": "BIGTABLE_COLUMN_FAMILY" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/BigQuery_to_Bigtable", } }
更改下列內容:
PROJECT_ID
: 您要執行 Dataflow 工作的專案 ID Google CloudJOB_NAME
: 您選擇的不重複工作名稱LOCATION
: 您要部署 Dataflow 工作的地區,例如us-central1
VERSION
: 您要使用的範本版本您可以使用下列值:
latest
,使用範本的最新版本,該版本位於值區中非依日期命名的上層資料夾:gs://dataflow-templates-REGION_NAME/latest/- 版本名稱 (例如
2023-09-12-00_RC00
),用於指定範本版本,該版本會以巢狀結構存放在值區中依日期命名的上層資料夾中:gs://dataflow-templates-REGION_NAME/
READ_COLUMN_ID
:BigQuery 的專屬 ID 資料欄。INPUT_TABLE_SPEC
:您的 BigQuery 資料表名稱。BIGTABLE_INSTANCE_ID
:您的 Bigtable 執行個體 ID。BIGTABLE_TABLE_ID
:您的 Bigtable 資料表 ID。BIGTABLE_COLUMN_FAMILY
:您的 Bigtable 資料表資料欄系列。
後續步驟
- 瞭解 Dataflow 範本。
- 請參閱 Google 提供的範本清單。