使用 GroupIntoBatches
轉換分組元素以有效率地呼叫外部服務
- Java SDK
- Python SDK
通常,編寫 Apache Beam 管道可以使用現成的工具和轉換,例如 ParDo、Window 和 GroupByKey。但是,當您想要更嚴格的控制時,您可以將狀態保留在原本無狀態的 DoFn 中。
狀態是按每個鍵和每個視窗維護的,因此,您有狀態的 DoFn 的輸入需要鍵控(例如,如果您正在追蹤電子商務網站的點擊次數,則按客戶識別碼)。
使用案例範例包括:為每個元素指派唯一的 ID、以「更特殊」的方式聯結資料串流,或將 API 呼叫批次處理到外部服務。在本節中,我們將特別介紹最後一個。
請務必查看 文件,以更深入瞭解狀態和計時器。
GroupIntoBatches
轉換在底層使用狀態和計時器,讓使用者可以嚴格控制下列參數
maxBufferDuration
:限制發出批次的最長等待時間。batchSize
:限制一個批次中的元素數量。batchSizeBytes
:(僅限 Java)限制一個批次的位元組大小(使用輸入編碼器來判斷元素大小)。elementByteSize
:(僅限 Java)限制一個批次的位元組大小(使用使用者定義的函數來判斷元素大小)。
同時從使用者抽象化實作細節。
withShardedKey()
功能藉由將一個鍵分散到多個執行緒來提高並行性。
這些轉換在 Java 和 Python 中以下列方式使用
應用這些轉換會按每個鍵輸出批次中的元素群組,然後您可以使用這些元素群組大量呼叫外部 API,而不是按每個元素呼叫,從而降低管道的額外負荷。
上次更新於 2024/10/31
您是否找到您要尋找的所有內容?
所有內容是否實用且清楚?是否有任何您想要變更的內容?請告訴我們!