Google cloud dataflow 窗格和窗口梁之间的区别

Google cloud dataflow 窗格和窗口梁之间的区别,google-cloud-dataflow,apache-beam,apache-beam-internals,Google Cloud Dataflow,Apache Beam,Apache Beam Internals,窗格和窗口有什么区别?传入元素被分组到窗口中。那么窗格包含什么 我从beam文档中获取了以下代码 .of(new DoFn<String, String>() { public void processElement(@Element String word, PaneInfo paneInfo) { }}) .of(新的DoFn(){ public void processElement(@Element字符串字,PaneInfo PaneInfo){ }}) 每

窗格和窗口有什么区别?传入元素被分组到窗口中。那么窗格包含什么

我从beam文档中获取了以下代码

.of(new DoFn<String, String>() {
     public void processElement(@Element String word, PaneInfo paneInfo) {
  }})
.of(新的DoFn(){
public void processElement(@Element字符串字,PaneInfo PaneInfo){
}})

每个元素是否属于一个窗格?还是多个窗格?需要一个简单的类比来理解窗格和窗口

窗口策略按事件时间划分数据。一个元素可以属于多个窗口(滑动窗口)

窗格由每个窗口的触发器触发。根据触发器的触发次数,窗口可以发出多个窗格。如果没有触发器,当窗口超出范围时,它只触发一个窗格

然后,每个窗格发出的数据可以通过累积模式聚合在一起

您可以将窗口视为类,将窗格视为该类的实例。元素可以属于一个或多个窗口,并由窗口用于发出窗格

有关windows和触发器的更多详细信息,请参见编程中的会话

指定触发器时,还必须设置窗口的累积模式。当触发器触发时,它将以窗格的形式发出窗口的当前内容。由于触发器可以多次触发,因此累积模式确定系统是在触发器触发时累积窗格,还是丢弃它们

要设置窗口以累积触发器触发时生成的窗格,请在设置触发器时调用.AccumatingFiredPanes()。要将窗口设置为放弃激发的窗格,请调用.discardingFiredPanes()


这是个好答案。可以将窗格视为窗口的子集吗?它们是具有类似时间相关属性的不同事物,而不是真正的子集。您可以将窗格视为窗口中数据的快照。如果你在日历中查看月视图,比如说在五月,你有31天的时间。日历中有31个框。比如说,从五月初开始,有一个固定长度的24小时窗口。然后,每个框实际上是一个窗口,日历中安排的事件/会议是数据。然后,假设您定义了一个触发器,每小时查看一次今天的事件。例如,在5月4日,您的行为将检查日历24次。每次,您都会看到当天当前计划事件的快照。如果有人在上午11点(活动时间)安排了一个特别会议,以便在今天晚些时候与您进行讨论,那么您总共会发出24个窗格,显示当前计划的今天的活动。如果日历工作正常,则只有在第11个窗格中才能看到事件/数据。如果日历中存在延迟,会议直到下午5点才显示,则您只能在第17个窗格之后看到数据。请注意,累积模式控制连续窗格的内容,例如,您只能看到自上一个窗格(丢弃模式)以来此窗口的新元素,或曾经添加到此窗口的所有元素(累积模式)。