如要將資料從 Bigtable 讀取至 Dataflow,請使用 Apache Beam Bigtable I/O 連接器。
平行處理工作數量
平行處理數由 Bigtable 叢集中的節點數控管。每個節點會管理一或多個鍵值範圍,但鍵值範圍可能會在節點之間移動,以進行負載平衡。詳情請參閱 Bigtable 說明文件中的「讀取和效能」。
系統會根據執行個體叢集中的節點數量計費。請參閱 Bigtable 定價。
成效
下表顯示 Bigtable 讀取作業的效能指標。工作負載是在一個 e2-standard2 工作站上執行,使用 Java 適用的 Apache Beam SDK 2.48.0。他們沒有使用 Runner v2。
| 1 億筆記錄 | 1 kB | 1 個資料欄 | 處理量 (位元組) | 處理量 (元素) |
|---|---|---|
| 已讀 | 180 MBps | 每秒 17 萬個元素 |
這些指標是以簡單的批次管道為依據。這些基準旨在比較 I/O 連接器之間的效能,不一定代表實際的管道。Dataflow 管道效能相當複雜,取決於 VM 類型、處理的資料、外部來源和接收器的效能,以及使用者程式碼。這些指標是根據執行 Java SDK 取得,無法代表其他語言 SDK 的效能特徵。詳情請參閱「Beam IO 效能」。
最佳做法
如果是新管道,請使用
BigtableIO連接器,而非CloudBigtableIO。為每種管道類型建立個別的應用程式設定檔。應用程式設定檔可提供更完善的指標,區分管道之間的流量,方便支援和追蹤用量。
監控 Bigtable 節點。如果遇到效能瓶頸,請檢查 Bigtable 內是否受到 CPU 使用率等資源限制。詳情請參閱「監控」。
一般來說,預設逾時時間已針對大多數管道進行適當調整。如果串流管道似乎無法從 Bigtable 讀取資料,請嘗試呼叫
withAttemptTimeout來調整嘗試逾時。請考慮啟用 Bigtable 自動調度資源,或調整 Bigtable 叢集大小,以配合 Dataflow 工作大小調整資源。
請考慮在 Dataflow 工作中設定
maxNumWorkers,以限制 Bigtable 叢集上的負載。如果在隨機排序前對 Bigtable 元素進行大量處理,對 Bigtable 的呼叫可能會逾時。在這種情況下,您可以呼叫
withMaxBufferElementCount來緩衝處理元素。這個方法會將讀取作業從串流轉換為分頁,避免發生問題。如果您同時使用單一 Bigtable 叢集進行串流和批次管道作業,且 Bigtable 端的效能降低,請考慮在叢集上設定複製功能。然後將批次和串流管道分開,以便從不同的副本讀取資料。詳情請參閱「複製總覽」。
後續步驟
- 參閱 Bigtable I/O 連接器說明文件。
- 請參閱Google 提供的範本清單。