我正在构建一个流分析,对于单个表,它需要大约50 GB的初始状态内存。~50 GB是我将状态加载到Scala HashMap[String,String]时使用的RAM量。
对于一个随时间增长的单个表,Flink能处理大约50 GB的状态吗?
我是否能够以流式方式对此表执行查找和更新?
注意事项:
对于Flink状态下的单个表,50-100 GB不是问题。
但需要明确的是,当我们谈论在 Flink 中具有大量状态(例如,TB)时,我们谈论的是跨许多并行任务进行分片的键控状态。是的,您可以有一个非常大的表,但任何给定实例将只有该表的行的子集。
请注意,您需要选择一个状态后端 - 基于堆的状态后端,它将状态保留在内存中,作为 JVM 堆上的对象,或者 RocksDB 状态后端,它将状态保留为具有内存中缓存的磁盘上的序列化字节。
在阅读了Flink的文档并四处搜索后,我无法完全理解Flink的句柄在其窗口中的状态。假设我有一个每小时滚动的窗口,其中包含一个聚合函数,该函数将消息累积到某个java pojo或scala case类中。该窗口的大小将与一小时内进入该窗口的事件数量相关联,还是仅仅与POJO/Case类相关联,因为我将事件累加到该对象中。(例如,如果将10000个味精数成一个整数,大小会接近10000*味精大小还
我想使用早期触发逻辑进行窗口聚合(您可以认为聚合是由窗口关闭或特定事件触发的),我阅读了文档:https://ci . Apache . org/projects/flink/flink-docs-release-1.12/dev/stream/operators/windows . html # incremental-window-aggregate-with-aggregate functi
我有两条流: 测量 WhoMeasured(关于谁进行了测量的元数据) 这些是它们的案例类: 流包含大量数据。流几乎没有任何可用性。事实上,对于<code>who_measured_id</code>流中的每个<code>who_。这本质上是一个哈希表,由流填充。 在我的自定义窗口函数中 这是我的工作。现在你可能会看到,有一些东西不见了:两个流的结合。 因此,从本质上讲,这是一种查找表,当流中的新
我们正在构建一个具有两个流的应用程序: 大量信息流 我们希望连接这两个流以获得共享状态,以便第一个流可以使用第二个状态进行扩展。 每天左右,拼花文件(第二流的源代码)都会更新,这需要我们清除第二流的状态并重建它(可能需要大约2分钟)。 问题是,我们可以在该进程运行时阻止/延迟来自第一流的消息吗? 谢谢。
我有一个相当简单的管道(代码比文字更好): 我的问题是,对于给定的窗口,我必须根据以下内容计算新的状态: 上一个状态(即上一个窗口的计算状态) 接收的事件 我希望避免调用外部服务来获取上一个状态,而是获取上一个窗口的状态。有可能吗?
我有一个流(KafkaMSG流到一个主题上),有一个flinkKafka消费者,我注意到一个有趣的行为,我想解决这个问题。 当数据正在流入时,如果它在窗口“完成”之前停止,或者如果数据结束(在几个窗口之后)并且没有到达窗口的末尾,则管道的其余部分不会触发。 流程示例: 我正在使用的Flink Kafka消费者010与env时间特性设置为事件时间。和consumer.assign时间戳和水印(新周期