我在使用 kstream 連接時遇到問題。我所做的是從一個主題中分離出 3 種不同類型的消息到新的流中。然后用兩個創(chuàng)建另一個流的流進(jìn)行一次內(nèi)連接,最后我對新流和最后一個剩余流進(jìn)行最后一次左連接。連接的窗口時間為 30 秒。這樣做是為了過濾掉一些被其他人覆蓋的消息。我在 kubernetes 上運行此應(yīng)用程序,并且 pod 的磁盤空間無限增長,直到 pod 崩潰。我意識到這是因為連接將數(shù)據(jù)本地存儲在 tmp/kafka-streams 目錄中。這些目錄被稱為:KSTREAM-JOINTHIS... KSTREAM-OUTEROTHER..它存儲來自 RocksDb 的 sst 文件,并且這些文件無限增長。我的理解是,因為我使用 30 秒的窗口時間,所以這些應(yīng)該在特定時間后被清除,但不是。我還將 WINDOW_STORE_CHANGE_LOG_ADDITIONAL_RETENTION_MS_CONFIG 更改為 10 分鐘,看看是否會發(fā)生變化,但事實并非如此。我需要了解如何改變這種情況。
1 回答

ITMISS
TA貢獻(xiàn)1871條經(jīng)驗 獲得超8個贊
窗口大小不會決定您的存儲要求,而是連接的寬限期。為了處理亂序記錄,數(shù)據(jù)的存儲時間比窗口大小要長。在較新的版本中,需要始終通過JoinWindows. ofTimeDifferenceAndGrace(...)
. JoinWindows.of(...).grace(...)
在舊版本中,您可以通過-- 如果未設(shè)置,則默認(rèn)為 24 小時來設(shè)置寬限期。
配置WINDOW_STORE_CHANGE_LOG_ADDITIONAL_RETENTION_MS_CONFIG
配置數(shù)據(jù)在集群中存儲多長時間。因此,您可能也想減少它,但它無助于減少客戶端存儲需求。
添加回答
舉報
0/150
提交
取消