簡體   English   中英

訪問動態變化的 Apache Flink 中的每個鍵狀態存儲

[英]Accessing per-key state store in Apache Flink that changes dynamically

我有一個帶有不同鍵的消息流。 對於每個鍵,我想創建一個事件時間會話窗口並僅在以下情況下對其進行一些處理:

  • MIN_EVENTS窗口中已累積的事件數(本質上是鍵控狀態)

對於每個鍵, MIN_EVENTS是不同的,並且可能會在運行時發生變化 我很難實現這一點。 特別是,我正在像這樣實現這個邏輯:

        inputStream.keyBy(key).
        window(EventTimeSessionWindow(INACTIVITY_PERIOD).
        trigger(new MyCustomCountTrigger()).
        apply(new MyProcessFn())

我正在嘗試創建一個自定義MyCustomCountTrigger() ,它應該能夠從狀態存儲中讀取,例如MapState<String, Integer> stateStore MIN_EVENTSkey映射到它的MIN_EVENTS參數。 我知道我可以使用可用於所有觸發器的TriggerContext ctx對象訪問狀態存儲。

如何從 CountTrigger() 類外部初始化此狀態存儲? 我一直無法找到這樣做的例子。

您可以根據發送到 Trigger 類的構造函數的參數來初始化狀態。 但是您不能從該類之外訪問該狀態。

如果您需要更大的靈活性,我建議您使用進程函數而不是窗口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM