ApacheBeam中无界PCollection的全局窗口的默认行为是什么?
创始人
2024-09-05 12:30:30
0

默认情况下,Apache Beam会在无界PCollection中为每个元素创建一个全局窗口。这意味着,每个元素都属于唯一的窗口,且窗口的边界为无限大。由于全局窗口没有边界,因此Beam Runner将在处理数据时不断等待新的数据到达。这种行为称为无限等待。

以下是一个基于Java的示例代码,展示了如何创建一个无界PCollection以及默认行为的实现:

Pipeline pipeline = Pipeline.create();

PCollection unboundedCollection =
        pipeline.apply(TextIO.read().from("input.txt"))
        .apply(Window.into(new GlobalWindows())
                .triggering(AfterWatermark.pastEndOfWindow())
                .withAllowedLateness(Duration.standardMinutes(10))
                .discardingFiredPanes())
        .apply(MapElements.via(new SimpleFunction() {
            @Override
            public String apply(String input) {
                return input.toUpperCase();
            }
        }));

unboundedCollection.apply(TextIO.write().to("output.txt"));

在上述示例代码中,我们通过应用 GlobalWindows() 方法来创建了一个无界PCollection的全局窗口。同时,我们也可以看到,定义了一个默认的触发器:AfterWatermark.pastEndOfWindow()。这意味着,我们想要在收到任何新元素时处理窗口,而无需考虑是否已到达窗口边界。默认的 allowed lateness 为 0,firing mode 为 discarding,表示元素已被丢弃。

注意,在没有显式定义触发器的情况下,Beam Runner将使用默认触发器:Repeatedly.forever(AfterPane.elementCountAtLeast(1)),这意味着在每个窗格中累积任意数量的元素时,Beam Runner将触发窗口处理。这对于有限数据集非常有用,但对于无限数据集来说则可能会导致问题,因为Beam Runner将不会在新数据到达时处理窗口。

因此,如果我们希望程序在一段时间内处理窗口并输出结果,我们需要显式地定义触发器,并将 allowed lateness 设置为适当

相关内容

热门资讯

线上(wepoke真的)原来是... 线上(wepoke真的)原来是真的有挂!其实真的有挂(2022已更新)(哔哩哔哩);亲,其实确实真的...
两教程(Wepoke程序)软件... 两教程(Wepoke程序)软件透明挂辅助工具(软件透明挂)透视辅助(2024已更新)(哔哩哔哩);致...
软件(wepoke透明)原来是... 软件(wepoke透明)原来是真的有挂!其实真的有挂(2020已更新)(哔哩哔哩)是一款可以让一直输...
一模拟器(德扑工具)外挂辅助工... 一模拟器(德扑工具)外挂辅助工具(透视)透视辅助(2025已更新)(哔哩哔哩);亲真的是有正版授权,...
系统(aapoker讲解)竟然... 系统(aapoker讲解)竟然真的有挂!其实真的有挂(2021已更新)(哔哩哔哩);aapoker讲...
6系统(aapoker下载)外... 6系统(aapoker下载)外挂辅助工具(辅助挂)透视辅助(2023已更新)(哔哩哔哩)aapoke...
智能(德扑之星刷数据)果真真的... 智能(德扑之星刷数据)果真真的有挂!原来真的有挂(2025已更新)(哔哩哔哩);《WPK辅助透视》‌...
1机器人(德州nzt软件)软件... 1机器人(德州nzt软件)软件透明挂辅助软件(透视)透视辅助(2022已更新)(哔哩哔哩);人气非常...
ai代打(德扑之星决策)确实是... ai代打(德扑之星决策)确实是真的有挂!原来真的有挂(2020已更新)(哔哩哔哩);科技详细教程小薇...
第8透明(wepoke数据)外... 第8透明(wepoke数据)外挂透明挂辅助神器(辅助挂)透视辅助(2023已更新)(哔哩哔哩);原来...