我正在研究基于Apache Flink的金融反欺诈系统。我需要根据金融交易计算许多不同的聚合。我使用 Kafka 作为流数据源。例如,在平均交易金额计算中,我使用 MapState 来存储总交易计数和每张卡的总金额。存储在Apache Accumulo的聚合数据。我知道 Flink 中的持久状态,但这不是我需要的。在计算开始之前,有没有办法将初始数据加载到 Flink 中?是否可以通过使用两个连接的流以及来自 Accumulo 的数据以及最新的计算聚合和事务流来完成?事务流是无限的,由聚合流不是。我应该往哪条路挖?任何帮助,不胜感激。
我已经考虑过 AsyncIO,但状态不能与异步函数一起使用。我的想法是:检查内存中状态的聚合。如果此处没有卡的数据 - 代码调用存储服务,从中获取数据,执行计算并更新内存中的状态,因此,该卡的下一个事务不需要通过调用外部数据服务来处理。但我认为这是一个很大的瓶颈。
你可以试试这种方式:
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