簡體   English   中英

Apache Flink 擴充

[英]Apache Flink enrichment

我有一個看起來像這樣的事件來源

class Event {
    String userName;
    String webPage;
}

我需要通過用戶過去的 web 頁面訪問來豐富我的 stream 事件。 (我在數據庫中有信息,可以將其用作 Flink 源)

class EventStats {
    String userName;
    Map<String,Integer> webPageCounters; 
}

如何確保在開始處理事件 Stream 之前,我將准備好豐富數據?
我不想從我的 stream 內部進行數據庫調用。

使用 Flink tbh 做到這一點可能很困難。 想到的第一個想法是進行數據庫掃描並在作業開始時創建一個單獨的 stream。 stream 可用於初始化,您可以簡單地將其與實際EventStats結合,但由於此問題,目前無法實現。 所以,基本上有兩種解決方案可以使用。

第一個非常簡單,所以如果您手動進行連接,您可以保留Event stream 中沒有匹配EventStats的元素。 如果您收到EventStats您只需檢查是否有任何可以發出的Event匹配。 如果元素不匹配,您可能還應該有一個邏輯,在一段時間后從 state 中刪除元素。

另一個解決方案有點棘手,但也更優雅。 因此,基本上您可以實現實現InputSelectable的自定義運算符,其方式是它首先嘗試使用 EventStats 中的所有內容,然后才開始讀取Event EventStats的元素。 有一些警告,您可以參考文檔以獲取更多信息。 另外,請注意InputSelectable是在 Flink 1.9 中引入的。

暫無
暫無

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

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