java—如何在ApacheFlink上正确初始化任务状态?

2sbarzqh  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(416)

我在金融反欺诈系统工作,基于apache flink。我需要根据金融交易计算许多不同的总量。我使用Kafka作为流数据源。例如,在平均交易金额计算中,我使用mapstate存储总交易计数和每张卡的总金额。存储在apache accumulo的聚合数据。我知道flink中的持久状态,但这不是我需要的。有没有办法在计算开始前把初始数据加载到flink中?是否可以通过使用两个连接的流以及来自accumulo的数据以及最新计算的聚合和事务流来完成?事务流是无限的,而非聚合流。我该往哪边挖?感谢您的帮助。
我考虑过asyncio,但是状态不能用于异步函数。我的想法是:在内存状态下检查聚合。如果这里没有卡的数据-代码调用存储服务,从中提取数据,执行计算并更新内存状态,因此,该卡的下一个事务不需要通过调用外部数据服务来处理。但我认为这是一个很大的瓶颈。

iq0todco

iq0todco1#

你可以这样做:

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

相关问题