我们试图构建一个用例,其中来自流的数据通过计算公式运行,但公式本身也应该(很少)是可更新的。从阅读文档来看,在我看来,Flink broadcast state自然适合这种情况。
作为一个实验,我构建了一个简化的版本:假设我有一个整数流,第二个流包含这些整数的乘法因子(我可以随意发送值)。第二个流的频率很低,很容易在事件之间的几天或几周内出现。目前,这两个都实现为简单的套接字服务器,最终产品将使用Kafka。
在我的示例应用程序中,这一切都是可行的,但我只剩下一个问题:当系统启动时会发生什么,而广播流上还没有发生任何事情?从哪里可以获得默认(或上次使用的)因子?在我的示例中,我现在通过硬编码一个值来解决这个问题,但这不是我可以使用的。
在我的实验项目中,我对此感到有点困惑,因为{processElement}只获得只读广播状态,但是在更新之前不会调用processBroadcastElement,这可能需要很长时间。我的计划是将使用的公式存储在数据库中,并在工作(重新)开始时以某种方式读取它,但我还没有找到一种方法来实现这一点。欢迎更多知识渊博的人提出任何建议,这是我的第一个Flink项目,所以我正在努力寻找解决html" target="_blank">方法。
工作示例如下:https://github.com/tonvanbart/flink-broadcast-example/tree/mapstate-attemptFlink代码处于classBroadcastState
中。
提前谢谢。
如果系统从检查点/保存点重新启动,那么您有最后一个被广播的因子(通过状态),对吗?所以我假设问题是当它最初启动时该怎么办。
如果是这样,那么这是您使用的模式的一个常见问题,您实际上希望阻止整数流,直到您从广播流中获得初始值。
目前常见的解决方案是在运算符(使用状态)中缓冲整数流,直到您获得初始值,但这可能会导致无界状态,具体取决于整数进来的速度以及您必须等待的时间。
您还可以尝试包装整数源(使其成为委托),并且在知道已广播某些内容之前不要发出任何值。E、 g.将广播内容设置为可查询状态,并定期检查,直到该状态存在。
我尝试在我的flink应用程序中使用广播状态模式,但经过一些研究,我做了以下工作: 在中,我读取数据,并根据来自的数据对数据进行一些逻辑处理并发出一些元素。基本上,我使用就像广播状态模式一样。我没有专门使用广播,因为没有简单的方法可以从访问我的某些状态。由于我的配置流被用作清理状态的指示符,我在我的中拥有。 流是<代码>。keyBy所以我不希望出现并行性问题 我的问题是,还需要广播哪些案例?在什么
我正在开发基于Apache Flink的金融反欺诈系统。我需要根据金融交易计算许多不同的总量。我使用Kafka作为流数据源。例如,在平均交易金额计算中,我使用MapState存储总交易计数和每张卡的总金额。存储在Apache Accumulo的聚合数据。我知道Flink中的持久状态,但这不是我需要的。在计算开始之前,有没有办法将初始数据加载到Flink中?是否可以通过使用两个连接的流和来自Accu
在广播模式的文档中,提到没有RocksDB状态后端: 如果应用程序使用rocksdb作为状态后端,这将如何影响保存点行为?这是否意味着状态在保存点期间不存储,因此不会恢复?
我们正在部署一个新的Flink流处理作业,它的状态(存储)需要使用历史数据进行初始化,并且在开始处理任何新的应用程序事件之前,该数据应该在状态存储中可用。我们不想显着修改Flink作业以同时加载历史数据。我们考虑编写另一个单独的Flink作业来处理历史数据,更新其状态存储并创建一个Savepoint并使用此Savepoint在主Flink作业中初始化状态。看起来状态处理器API仅适用于DataSe
本文向大家介绍react-native 初始化状态,包括了react-native 初始化状态的使用技巧和注意事项,需要的朋友参考一下 示例 您应该像这样在组件的构造函数内部初始化状态: 使用setState可以更新视图。
我最近遇到了一些关于开发flink作业的问题,它引入了Spring和hibernate,并且作业将在flink集群上运行。所以我需要在运行任务管理器而不是作业管理器上的flink操作符之前初始化Spring资源。但是我找不到任何合适的StreamExecttion环境方法来做到这一点。 我尝试了以下一些方法: 但是,当并行性不止一个的flink作业执行时,spring初始化不会出现在每个任务管理器