Thanks. The way I solved it now is by creating a class that persists data into something external (right now HBase and/or Kafka) and use that from the trigger to output the data.
I have two followup questions: 1) Is it possible to pass an instance of 'SourceFunction' as such a parameter (without breaking Flink)? 2) I want to save resources so I'm using a single instance of my 'Extra data output class' in the instance of the Trigger. Thus reusing the connections to the outside over multiple Window instances. Can I assume that a single instance of Trigger will only be used by a single thread? I.e. Can I assume that I do not need locking and synchronization? Niels On Thu, Dec 10, 2015 at 4:14 PM, Stephan Ewen <se...@apache.org> wrote: > Hi Niels! > > I think there is no clean way to emit data from a trigger right now, you > can only emit data from the window functions. > > You can emit two different kind of data types using an "Either" type. This > is built-in in Scala, in Java we added it on 1.0-SNAPSHOT: > > https://github.com/apache/flink/blob/master/flink-java/src/main/java/org/apache/flink/api/java/typeutils/Either.java > > Maybe being able to emit different type of elements helps your use case... > > > These types of questions have been coming up quite a bit, people looking > to do different actions inside the windows on different triggers (on > element, on event time). > > As per discussion with Aljoscha, one way to make this more flexible is to > enhance what you can do with custom state: > - State has timeouts (for cleanup) > - Functions allow you to schedule event-time progress notifications > > Stephan > > > > On Thu, Dec 10, 2015 at 11:55 AM, Niels Basjes <ni...@basjes.nl> wrote: > >> Hi, >> >> I'm working on something that uses the Flink Window feature. >> I have written a custom Trigger to build the Window I need. >> >> I am using the Window feature because I need state and I need to expire >> (and clean) this state after a timeout (I use the onEventTime to do that). >> Because I need the data streaming in real time (augmented with the >> mentioned state) I 'FIRE' after every event. Just before I 'PURGE' the >> window I need the fact of this purge (and some of the stats of this Window) >> as a separate event in a separate 'DataStream'. >> >> Now the interfaces of the various classes only support output as a single >> java type (very sane choice). >> So what I do right now is put my events on something 'external' >> (HBase/Kafka) and read it in via a different Source implementation. >> >> My question: Is there a better way to do this? >> Can I (for example) create a special 'Source' that I can pass as a >> parameter to my Trigger and then onEventTime just output a 'new event' ? >> >> What do you recommend? >> >> -- >> Best regards / Met vriendelijke groeten, >> >> Niels Basjes >> > > -- Best regards / Met vriendelijke groeten, Niels Basjes