如何最小化flink检查点状态大小

zzwlnbp8  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(658)

我有以下cep patternstream,其中数据流基于实体id进行分区,因为我只对实体具有相同实体id时的模式匹配感兴趣:

PatternStream<EntityMetric> patternStream = CEP.pattern(inputStream.keyBy(EntityMetric.ATTR_ENTITY_ID), thresholdPattern);

但是后来我注意到检查点状态的大小随着实体id数量的增加而增加。如果我正确理解检查点,那么这是意料之中的,因为操作符状态的数量增加了。但是我想知道是否有其他方法可以最小化检查点状态大小。
有没有一种不同的方法来实现这种模式匹配而不基于实体id对数据流进行分区?
是否有其他技术或配置属性可以帮助减少检查点状态大小?
谢谢!

goqiplq2

goqiplq21#

你的问题没有一个简单的答案。首先,要最小化的状态大小是多少?
状态的大小随着实体id的数量而增加并不完全正确,而是随着找到的部分匹配的数量而增加。如果某些ID没有部分匹配,它们就不会增加状态的大小。因此我建议你坚持使用 KeyedStream .
对于flinkcep来说,不要留下一些悬空状态是非常重要的,例如 followedByAny 或者 zeroOrMore . 避免离开悬空状态的最简单方法是为具有 within 这样所有超时的模式都将被删除。另一种可能性是使用确定性的连续性,比如 next 或者 followedBy 使用 until 循环模式的条件。

相关问题