我刚接触apache flink,正在构建一个简单的应用程序,在这个应用程序中,我从一个kinesis流中读取事件,比如
TestEvent{
String id,
DateTime created_at,
Long amount
}
对字段执行聚合(求和) amount
在上面的流上键入 id
. 转换相当于sql select sum(amount) from testevents group by id
哪里 testevents
所有的事件都收到了。聚合结果存储在flink状态,我希望通过api公开结果。有什么办法吗?
ps:我们能在dynamodb中存储flink状态并在那里创建api吗?或者其他任何方式来坚持并向外界暴露国家?
1条答案
按热度按时间dnph8jn41#
我建议暂时忽略state,而将sinks视为流应用程序输出结果的主要方式。
如果您已经在使用kinesis进行输入,那么也可以使用kinesis从flink输出结果。然后,您可以使用由aws提供的dynamodb的kinesis适配器,如相关stackoverflow post中所述。
回到您最初的问题:您可以查询flinks状态并将restapi与流应用程序一起发布,但要实现您的目标,需要做大量的工作。您还可以通过stateapi访问checkpointed/savepointed状态,但这同样需要大量的手工工作,可以通过上面概述的常规路径来保存。