Apache Flink:在运行时从外部更改状态参数
Posted
技术标签:
【中文标题】Apache Flink:在运行时从外部更改状态参数【英文标题】:Apache Flink: changing state parameters at runtime from outside 【发布时间】:2016-07-21 13:25:03 【问题描述】:我目前正在开发流式 ML 管道,并且只需要一次事件处理。我对 Flink 很感兴趣,但我想知道是否有任何方法可以从外部更改/更新执行状态。
ml 算法状态由 Flink 保存,这没关系,但考虑到我想在运行时更改一些执行参数,我找不到可行的解决方案。基本上,一个外部 webapp(在 GO 中)用于调整参数,变化应该反映在 Flink 中以供后续事件使用。
我想过:
与 pub/sub 共享的 Redis(因为轮询每个事件会降低吞吐量) 在 Go 中编写自定义解决方案:D ...状态将通过密钥保存,与来自 Kafka 的多个事件流之一的源相关。
谢谢
【问题讨论】:
【参考方案1】:您可以使用CoMapFunction
/CoFlatMapFunction
来实现您所描述的。其中一个输入是正常数据输入,而在另一个输入上您会收到状态更改命令。这可能是通过专门的 Kafka 主题最容易获取的。
【讨论】:
看起来很有希望,我正在考虑向 Flink 发送“控制事件”,但由于我在互联网上没有找到任何东西,所以我认为我可能只是在滥用一些不符合目的的东西。 ..我的意思是也许 Flink(和朋友)不是这个应用程序的最佳选择?我的情况有那么不寻常吗? 我认为 co 函数正是为这类用例而设计的,在这些用例中,您有多个输入流但仍希望访问元素到达的相同状态。 谢谢 Till,我会试试看的!以上是关于Apache Flink:在运行时从外部更改状态参数的主要内容,如果未能解决你的问题,请参考以下文章