Thanks Fabian and Aljoscha,

I try to implement the trigger as you described as follow:

https://gist.github.com/anonymous/d0578a4d27768a75bea4
<https://gist.github.com/anonymous/d0578a4d27768a75bea4>

It works fine , indeed.

Thanks,
Anwar


On Fri, Nov 27, 2015 at 11:49 AM, Aljoscha Krettek <aljos...@apache.org>
wrote:

> Hi Anwar,
> what Fabian wrote is completely right. I just want to give the reasoning
> for why the CountTrigger behaves as it does. The idea was to have Triggers
> that clearly focus on one thing and then at some point add combination
> triggers. For example, an OrTrigger that triggers if either of it’s sub
> triggers triggers, or an AndTrigger that triggers after both its sub
> triggers fire. (There is also more complex stuff that could be thought of
> here.)
>
> Cheers,
> Aljoscha
> > On 27 Nov 2015, at 09:59, fhue...@gmail.com wrote:
> >
> >
> > Hi,
> >
> > a regular tumbling time window of 5 seconds gets all elements within
> that period of time (semantics of time varies for processing, ingestion,
> and event time modes) and triggers the execution after 5 seconds.
> >
> > If you define a custom trigger, the assignment policy remains the same,
> but the trigger condition is overwritten (it is NOT additional but replaces
> the default condition), i.e., in your implementation, it will only trigger
> when 100 elements arrived. In order to trigger also when the window time
> expires, you have to register a timer (processing time or event time timer)
> via the trigger context.
> > NOTE: The window assigner will continue to assign elements to the
> window, even if the window was already evaluated. If you PURGE the window
> and an element arrives after that, a new window is created.
> >
> > To implement your trigger, you have to register a timer in the onEvent()
> method with:
> > ctx.registerEventTimeTimer(window.getEnd)
> > You can to that in every onEvent() call, because the timer is always
> overwritten.
> >
> > NOTE: you should use Flink’s keyed-state (access via triggerContext) if
> you want to keep state such as the current count.
> >
> > Hope this helps. Please let me know if you have further questions.
> > Fabian
> >
> >
> >
> >
> > From: Matthias J. Sax
> > Sent: Friday, November 27, 2015 08:44
> > To: user@flink.apache.org
> > Subject: Re: Doubt about window and count trigger
> >
> >
> > Hi,
> >
> > a Trigger is an *additional* condition for intermediate (early)
> > evaluation of the window. Thus, it is not "or-ed" to the basic window
> > definition.
> >
> > If you want to have an or-ed window condition, you can customize it by
> > specifying your own window definition.
> >
> > > dataStream.window(new MyOwnWindow() extends WindowAssigner { /* put
> your code here */ );
> >
> > -Matthias
> >
> >
> > On 11/26/2015 11:40 PM, Anwar Rizal wrote:
> > > Hi all,
> > >
> > > From the documentation:
> > > "The |Trigger| specifies when the function that comes after the window
> > > clause (e.g., |sum|, |count|) is evaluated (“fires”) for each window."
> > >
> > > So, basically, if I specify:
> > >
> > > |keyedStream
> > >     .window(TumblingTimeWindows.of(Time.of(5, TimeUnit.SECONDS))
> > >     .trigger(CountTrigger.of(100))|
> > >
> > > |
> > > |
> > >
> > > |The execution of the window function is triggered when the count
> reaches 100 in the time window of 5 seconds. If you have a system that
> never reaches 100 in 5 seconds, basically you will never have the window
> fired.|
> > >
> > > |
> > > |
> > >
> > > |My question is, what would be the best option to have behavior as
> follow:|
> > >
> > > |The execution of the window function is triggered when 5 seconds is
> reached or 100 events are received before 5 seconds.|
> > >
> > >
> > > I think of implementing my own trigger that looks like CountTrigger,
> but that will fire also when the end of time window is reached (at the
> moment, it just returns Continue, instead of Fired). But maybe there's a
> better way ?
> > >
> > > Is there a reason why CountTrigger is implemented as it is implemented
> today, and not as I described above (5 seconds or 100 events reached,
> whichever comes first).
> > >
> > >
> > > Thanks,
> > >
> > > Anwar.
> > >
>
>

Reply via email to