Hi Michael, There isn’t an operator that takes three (or more) streams, AFAIK.
There is a CoFlatMapFunction that takes two different streams in, which could be used for some types of joins. Streaming joins are (typically) windowed (bounded), by time/count/something, so if you can maintain the required windowed state in a ProcessFunction then you can implement whatever custom logic is required for your join case. And for creating a unioned stream of multiple data types, one easy way is via (e.g.) Tuple3<POJO1, POJO2, POJO3>, where only one of the three fields is non-null for each tuple. -- Ken PS - I think the [email protected] <mailto:[email protected]> list is probably a better forum for this question. > On Apr 7, 2018, at 10:47 AM, TechnoMage <[email protected]> wrote: > > In my case I have more elaborate logic to select data from the streams. They > are not all the same logical type, though I may be able to represent them as > the same Java type. My main question is whether it is technically feasible > to have a single operator that takes multiple streams as input. For example > Operator(stream1, stream2, stream3) and produces an output stream. Can the > checkpointing and other logic accomodate this if I write sufficient custom > code in the operator? > > Michael > >> On Apr 7, 2018, at 10:42 AM, Ken Krugler <[email protected]> wrote: >> >> When you say “join” are you talking about a real join (so one or more fields >> can be used as a joining key), or some other operation? >> >> For more than two streams, you can do cascading window joins via multiple >> join()s that reduce your source streams down to a single stream. >> >> If the fields are the same across these streams, then a union() followed by >> say a ProcessFunction that implements your joining logic could work. >> >> Or you can convert all the streams to a common tuple format that consists of >> a unions the fields, so you can do a union() and then follow that with >> whatever logic is needed to actually do the join. >> >> Though I’m sure there are more elegant approaches :) >> >> — Ken >> >> >> >>> On Apr 6, 2018, at 5:04 PM, Michael Latta <[email protected]> wrote: >>> >>> I would like to “join” several streams (>3) in a custom operator. Is this >>> feasible in Flink? >>> >>> >>> Michael >> >> -------------------------------------------- >> http://about.me/kkrugler >> +1 530-210-6378 >> > -------------------------------------------- http://about.me/kkrugler +1 530-210-6378
