亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Apache Beam 管理背壓

如何使用 Apache Beam 管理背壓

元芳怎么了 2023-06-14 16:35:51
我有非?;镜?apache beam 管道,它在 GCP Dataflow 上運行并從 PubSub 讀取一些數據,對其進行轉換并將其寫入 Postgres 數據庫。所有這些都是通過 Apache Beam 的標準讀取器/寫入器組件完成的。問題是當我的管道開始接收大量數據時,我的 Postgres 端由于等待 ShareLocks 而出現死鎖錯誤。很明顯,這種事情的發生是因為 Postgres 端溢出。我的管道試圖一次寫得太快和太多東西,所以為了避免這種情況,它應該放慢速度。因此,我們可以使用諸如背壓之類的機制。我試圖挖掘出有關 Apache Beam 背壓配置的任何信息,不幸的是,官方文檔似乎對此類問題只字未提。我對以下類型的異常感到不知所措:java.sql.BatchUpdateException: Batch entry <NUMBER><MY_STATEMENT> was aborted: ERROR: deadlock detected  Detail: Process 87768 waits for ShareLock on transaction 1939992; blocked by process 87769.Process 87769 waits for ShareLock on transaction 1939997; blocked by process 87768.  Hint: See server log for query details.  Where: while inserting index tuple (5997152,9) in relation "<MY_TABLE>"  Call getNextException to see other errors in the batch.我想知道是否有任何背壓工具包或類似的東西可以幫助我在不編寫自己的PostgresIO.Writer.非常感謝。
查看完整描述

1 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

假設您使用JdbcIO寫入 Postgres,您可以嘗試增加批處理大小(請參閱 參考資料withBatchSize(long batchSize)),默認情況下為 1K 條記錄,這可能是不夠的。

此外,如果出現 SQL 異常,并且您想要重試,那么您需要確保使用正確的重試策略(參見 參考資料withRetryStrategy(RetryStrategy retryStrategy))。在這種情況下,FluentBackoff將被應用。


查看完整回答
反對 回復 2023-06-14
  • 1 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號