On Thu, Oct 22, 2020 at 11:08 AM Jacob Sevart <jsev...@uber.com> wrote:
> I think the issue is you have to specify a *time *interval for "step." It > would be nice to consider the preceding N minutes as of every message. You > can somewhat approximate that using a very small step. > Indeed, I want the window to slide continuously, not based on a time interval. I think with the code I posted earlier I'd be creating too many windows, and double-counting events. I might need to go with global + evictor, since I want to age out each event. -0xe1a > On Thu, Oct 22, 2020 at 2:29 AM Danny Chan <danny0...@apache.org> wrote: > >> The SLIDING window always triggers as of each step, what do you mean by >> "stepless" ? >> >> Alex Cruise <a...@cluonflux.com> 于2020年10月21日周三 上午1:52写道: >> >>> whoops.. as usual, posting led me to find some answers myself. Does this >>> make sense given my requirements? >>> >>> Thanks! >>> >>> private class MyWindowAssigner(val windowSize: Time) : >>> WindowAssigner<Record, TimeWindow>() { >>> private val trigger = CountTrigger.of<TimeWindow>(1) as Trigger<Record >>> TimeWindow> >>> >>> override fun assignWindows( >>> element: Record, >>> timestamp: Long, >>> context: WindowAssignerContext >>> ): MutableCollection<TimeWindow> { >>> return mutableListOf(TimeWindow(timestamp - >>> windowSize.toMilliseconds(), timestamp)) >>> } >>> >>> override fun getDefaultTrigger(env: StreamExecutionEnvironment?): >>> Trigger<Record, TimeWindow> { >>> return trigger >>> } >>> >>> override fun getWindowSerializer(executionConfig: ExecutionConfig?): >>> TypeSerializer<TimeWindow> { >>> return TimeWindow.Serializer() >>> } >>> >>> override fun isEventTime(): Boolean { >>> return true >>> } >>> } >>> >>> >>> On Tue, Oct 20, 2020 at 9:13 AM Alex Cruise <a...@cluonflux.com> wrote: >>> >>>> Hey folks! >>>> >>>> I have an application that wants to use "stepless" sliding windows, >>>> i.e. we produce aggregates on every event. The windows need to be of a >>>> fixed size, but to have their start and end times update continuously, and >>>> I'd like to trigger on every event. Is this a bad idea? I've googled and >>>> read the docs extensively and haven't been able to identify built-in >>>> functionality or examples that map cleanly to my requirements. >>>> >>>> OK, I just found DeltaTrigger, which looks promising... Does it make >>>> sense to write a WindowAssigner that makes a new Window on every event, >>>> allocation rates aside? >>>> >>>> Thanks! >>>> >>>> -0xe1a >>>> >>> > > -- > Jacob Sevart > Software Engineer, Safety >