私はイベントのストリームから潜在的に非常に大規模な状態を予測したいです。これは私が不可欠な方法でこれを実装する方法を次のとおりです。BarStateのサイズは回数で成長する最悪の場合にはアパッチFLINK - 潜在的に非常に大きな状態でストリームプロセッサを実装
class ImperativeFooProcessor {
val state: mutable.Map[UUID, BarState] = mutable.HashMap.empty[UUID, BarState]
def handle(event: InputEvent) = {
event match {
case FooAdded(fooId, barId) => {
// retrieve relevant state and do some work on it
val barState = state(barId)
// let the world know about what may have happened
publish(BarOccured(fooId, barId))
// or maybe rather
publish(BazOccured(fooId, barId))
}
case FooRemoved(fooId, barId) => {
// retrieve relevant state and do some work on it
val barState = state(barId)
// let the world know about what may have happened
publish(BarOccured(fooId, barId))
// or maybe rather
publish(BazOccured(fooId, barId))
}
}
}
private def publish(event: OutputEvent): Unit = {
// push event to downstream sink
}
}
FooAdded
で言及されて、そのユニークなbarIdの数が非常にあります各棒のイベントの合計数に対して相対的に小さい。
私はこの処理構造をFlinkでどのように表現し始めますか?
各BarStateが潜在的に非常に大きくなる可能性があるという事実をどうやって解決するのですか?