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 <[email protected]> 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
>