我是Apache flink的新手,他构建了一个简单的应用程序,从中读取运动学流中的事件,像这样
TestEvent{
String id,
DateTime created_at,
Long amount
}
由amount
键控的上述流上的字段id
上的执行聚合(总和)。转换等效于SQL select sum(amount) from testevents group by id
,其中testevents
是到目前为止收到的所有事件。
汇总结果以flink状态存储,我希望通过API公开结果。有什么办法吗?
PS:我们可以将flink状态存储在dynamoDB中并在其中创建API吗?或其他任何方式来维持国家与外界的接触?
答案 0 :(得分:1)
我建议暂时忽略状态,而将接收器视为流应用程序输出结果的主要方式。
如果已经使用Kinesis进行输入,则还可以使用Kinesis从Flink输出结果。然后,您可以使用由AWS提供的DineamoDB的Kinesis适配器,如related stackoverflow post所述。
回到您的原始问题:您可以查询Flinks状态并与流应用程序一起交付REST API,但这并不是实现目标所需的大量工作。您还可以通过状态API访问检查点/保存点状态,但是同样,通过执行上面概述的常规路线,可以节省大量的手动工作。
答案 1 :(得分:0)
这是 Flink 的文档,提供了一些用例queryable_state
您也可以使用 API 离线阅读State Processor API