我是 Apache flink 的新手,正在构建一个简单的应用程序,在其中读取来自 kinesis 流的事件,例如
TestEvent{
String id,
DateTime created_at,
Long amount
}
对上述流上以 id
键控的字段 amount
执行聚合(求和)。该转换相当于 SQL select sum(amount) from testevents group by id
,其中 testevents
是迄今为止收到的所有事件。
聚合结果存储在 flink 状态中,我希望通过 API 公开结果。有什么办法可以做到吗?
PS:我们可以将 flink 状态存储在 dynamoDB 中并在那里创建 API 吗?或者任何其他方式来坚持并将国家暴露给外界?
最佳答案
我建议暂时忽略状态,而将接收器视为流应用程序输出结果的主要方式。
如果您已经使用 Kinesis 进行输入,您还可以使用 Kinesis 从 Flink 输出结果。然后,您可以使用 AWS 提供的适用于 DynamoDB 的 Kinesis 适配器,如 related stackoverflow post 中进一步所述。 .
回到你原来的问题:你可以查询 Flinks 状态并将 REST API 与你的流应用程序一起发布,但这是实现你的目标不需要的大量工作。您还可以通过状态 API 访问检查点/保存点状态,但这又是相当多的手动工作,可以通过上面列出的通常路线来节省。
关于amazon-dynamodb - 从flink集群外部访问flink状态有哪些方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59029211/