My Scenario is like this.
我想查看/查询活动处理窗口的特定查询的当前聚合值是什么 .
我在Apache Flink见过这个 .
For e.g:
假设我有一个查询来计算失败的总数,每12小时开窗一次 . 我想(从另一个应用程序)询问活动聚合窗口的当前计数是多少 . 请注意,活动窗口仍在处理中 .
原因是我的应用程序需要向用户提供有关其当前总故障计数的反馈 . 所以他/她可以基于此行事 . 等待处理窗口然后获得计数,这不是用户视角中的期望行为 .
这可能吗?如果是这样的话?
1 回答
一种选择是使用rolling time window . 滚动时间窗口将为您提供给定时间范围的滚动聚合(总和,计数等) . 因此,对于每个传入的事件,您将获得带有计数的输出事件 . 您可以使用它来提供反馈 . 这种方法有两种方法 . 一个是滚动计数而不是批次计数 . 另一个是使用事件计数流来触发进程 . 如果您想根据其他要求触发反馈(例如:用户启动,每小时等),这种方法将无效 . 为此,您需要使用以下方法 .
使用time batch window然后将其与另一个流连接,这将根据业务需求触发 . 以下是一个示例,以下是testcases供您参考 .
另一种选择是使用query功能 . 如果您使用Siddhi作为库并且您可以访问SiddhiAppRuntime,则此方法是合适的 . 下面是一个代码示例 . 让我们假设下面是您的窗口查询来计算计数 .
然后,您可以使用以下查询来访问窗口数据 .
事件将包含一个带有计数的事件 . 这是对testcases的引用 .