Hi,

I am pretty new to Flink and I'm trying to implement - which seems to me -
a pretty basic pattern:

Say I have a single stream of *Price *objects encapsulating a price value
and a symbol (for example A to Z)  they are emitted at a very random
interval all day - could be 10000 /day or once a week.

*..(price= .22, symbol = 'B')...(price= .12 , symbol = 'C').. (price= .12 ,
symbol = 'A'). .(price= .22, symbol = 'Z')...*

I want to define an operator that should emit a single object only once
when ALL symbols have been received (not before) - the object will include
all the received prices.
If a price is received again for the same symbol it will reemit the same
object with the updated price and all previous prices will stay the same.

If the stream is keyed by symbol I understand that using MapState state
will not help because the state is local to the partition - each task will
need to know that all symbols have been received.

Basically I'm looking for a global state for a single keyed stream - a
state accessible by all parallel tasks - I have used the broadcast pattern
but I understand this is when connecting 2 streams - is there a way to do
it without forcing parallelism to 1.

Thanks in advance for your assistance

Adam

Reply via email to