2017-08-18 131 views
0

我正在研究基於Apache Flink的財務反欺詐系統。我需要根據金融交易計算許多不同的總量。我使用Kafka作爲流數據源。例如,在平均交易金額計算中,我使用MapState來存儲總交易數和每張卡的總金額。存儲在Apache Accumulo中的彙總數據。我知道Flink的持續狀態,但這不是我需要的。在計算開始之前有什麼方法可以將初始數據加載到Flink中?是否可以通過使用來自Accumulo的數據與最新計算的聚合和交易流一起使用兩個連接的流來完成?交易流是無限的,通過聚合流不是。我應該挖掘哪種方式?任何幫助表示讚賞。如何正確初始化Apache Flink的任務狀態?

我想過關於AsyncIO,但狀態不能用於異步功能。我的想法是:檢查內存狀態下的聚合。如果這裏沒有卡的數據 - 代碼會調用存儲服務,從中獲取數據,執行計算並更新內存狀態,因此,該卡的下一次事務不需要通過調用外部數據服務來處理。但我認爲它是一個很大的瓶頸。

回答

0

你可以試試這個方法:

TASK::setInitialState 
    TASK::invoke 
     create basic utils (config, etc) and load the chain of operators 
     setup-operators 
     task-specific-init 
     initialize-operator-states 
     open-operators 
     run 
     close-operators 
     dispose-operators 
     task-specific-cleanup 
     common-cleanup