来自docs(文档是1.x,虽然我使用的是2.2):
注意:默认情况下,PubsubIO转换创建无界PCollections。使用PubsubIO.Read创建PCollection之后,应该应用窗口策略到该PCollection,然后再应用任何对元素进行分组的变换,例如GroupByKey或Combine。
因此,如果我不需要使用分组转换,使用PubsubIO.Read时是否需要应用窗口?
如果我确实使用了分组转换,但没有指定窗口,会发生什么?默认情况下是否从PubsubIO.Read应用了默认窗口?
答案 0 :(得分:1)
默认的窗口策略是使用所有元素都属于的单个全局窗口。
如果您确定您的管道没有使用分组或聚合,那么您可以使用默认的全局窗口。但是,您可能仍需要trigger条件来指定应从接收器转换写入数据的位置。否则,数据将永远累积在全局窗口中,导致管道出现卡住状态。
Beam文档在此处提供了有关窗口的其他详细信息:https://beam.apache.org/documentation/programming-guide/#windowing