如果我应用了一个固定的 window,我是否总是会从 `window()` 得到一个 IntervalWindow

If I have applied a fixed window, will I always get an IntervalWindow from `window()`

如果我实现一个可以访问 window 的 DoFn,附带条件是正在转换的 PCollection 已经应用了一些非全局 windowing 策略,即 FixedWidows 我能保证得到 IntervalWindow 吗?

对于FixedWindows,是的。一般来说,没有。唯一的一般保证是您将获得 BoundedWindow。目前,SDK 提供的所有非全局 windows(FixedWindowsSlidingWindowsSessions)都使用 IntervalWindow。但是拥有仅使用 BoundedWindows.

的非全局窗口策略是完全合法的

是的。 window() 方法 return 是当前 WindowFn 将元素放入的任何一种 window。因此,使用 FixedWindows 这将始终 return 一个 IntervalWindow.

它也总是 return 一个 window。所以如果你使用 SlidingWindows 并且每个元素被放入 5 个不同的 windows 中,那么用 RequiresWindowAccess 注释的 DoFnprocessElement() 将被调用一次对于每个 window 元素被放入(因此每个元素 5 次)。