如要將資料從 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 提供的範本清單。