gpt4 book ai didi

java - 数据流不同转换示例

转载 作者:行者123 更新时间:2023-12-02 01:55:32 24 4
gpt4 key购买 nike

在我的数据流管道中,我尝试使用 Distinct transform以减少重复。我想尝试最初将其应用于固定的 1 分钟窗口,并使用另一种方法来处理窗口中的重复项。如果 1 分钟窗口是真实/处理时间,则后一点可能效果最好。

我预计有 1000 个元素,每个元素有几 KiB 的文本字符串。

我设置了窗口和不同的转换,如下所示:

PCollection<String>.apply("Deduplication global window", Window
.<String>into(new GlobalWindows())
.triggering(Repeatedly
.forever(AfterProcessingTime
.pastFirstElementInPane()
.plusDelayOf(Duration.standardMinutes(1))
)
)
.withAllowedLateness(Duration.ZERO).discardingFiredPanes()
)
.apply("Deduplicate URLs in window", Distinct.<String>create());

但是当我在 GCP 上运行此代码时,我发现 Distinct 转换似乎发出的元素多于它接收的元素:

enter image description here

(因此根据定义,它们不可能是不同的,除非它是虚构的!)

我猜我可能没有正确设置它。有没有人有一个如何做到这一点的例子(除了javadoc之外我没有真正找到太多)?谢谢。

最佳答案

因为您想在 1 分钟窗口内删除重复项;

您可以使用带有默认触发器的固定窗口,而不是使用带有处理时间触发器的全局窗口。

Window.<String>into(FixedWindows.of(Duration.standardSeconds(60))));

接下来的不同转换将根据事件时间删除 1 分钟窗口内的任何重复键。

关于java - 数据流不同转换示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com