從 Bigtable 讀取資料至 Dataflow

如要將資料從 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 端的效能降低,請考慮在叢集上設定複製功能。然後將批次和串流管道分開,以便從不同的副本讀取資料。詳情請參閱「複製總覽」。

後續步驟