当前位置: 首页 > 知识库问答 >
问题:

有界集合的谷歌云数据流在批处理模式下移动水印吗?

陈斌蔚
2023-03-14
Window.<Map.Entry<Key, Long>>into(
    FixedWindows.of(Duration.standardSeconds(10)))
        .withAllowedLateness(Duration.ZERO)
        .triggering(AfterWatermark.pastEndOfWindow()
            .withEarlyFirings(AfterPane.elementCountAtLeast(10))))
        .discardingFiredPanes()

在窗口之后,每个键组合集合:sum.longsperkey()

问题是,在完全读取集合之前,集合的元素永远不会通过组合器。这是批处理模式下数据流的预期行为吗?我的猜测是Dataflow根本不计算/移动水印,这接近事实吗?

我的问题与GroupByKey转换的早期结果非常相似,但在我的例子中,集合是由一个可拆分的DoFn读取的,其中ProcessContext.UpdateWatermark在每个元素的末尾调用

共有1个答案

夹谷阳夏
2023-03-14

是的,这是批处理模式管道的预期行为,而不管使用可拆分DOFN。

通常,所有元素一次(总共)通过每个步骤。一个窗口的结果可能会在其他窗口之前得到处理,但这更多地与容量和分布式执行有关。

最后,GroupByKey,或者在您的示例中是Sum By Key,强制进行洗牌操作,这要求在实际执行SBK转换之前准备好所有数据。

 类似资料:
  • 我正在使用dataflow处理存储在GCS中的文件,并写入Bigquery表。以下是我的要求: 输入文件包含events记录,每个记录属于一个EventType; 需要按EventType对记录进行分区; 对于每个eventType输出/写入记录到相应的Bigquery表,每个eventType一个表。 每个批处理输入文件中的事件各不相同; 我正在考虑应用诸如“GroupByKey”和“Parti

  • 我正在使用Spring Cloud Stream和Kafka Binder批量消费来自一个Kafka主题的消息。我正在尝试实现一个错误处理机制。根据我的理解,我不能在批处理模式下使用Spring Cloud Stream的< code>enableDLQ属性。 我找到了和,以重试并从spring-kafka文档发送失败消息。但我无法理解如何按照功能编程标准将记录发送到自定义DLQ主题。我看到的所有

  • 当我运行Dataflow作业时,它会将我的小程序包(setup.py或requirements.txt)上传到Dataflow实例上运行。 但是数据流实例上实际运行的是什么?我最近收到了一个stacktrace: 但从理论上讲,如果我在做,这意味着我可能没有运行这个Python补丁?你能指出这些作业正在运行的docker图像吗,这样我就可以知道我使用的是哪一版本的Python,并确保我没有在这里找

  • 顺便说一句:我的应用程序是一些REST控制器和一些批处理作业的组合。那么使用云数据流有意义吗?如果没有,那么是否有更好的控制台管理器用于批处理作业(如重新启动、取消作业门户)等?

  • 我正在尝试使用谷歌云数据流将谷歌PubSub消息写入谷歌云存储。PubSub消息采用json格式,我要执行的唯一操作是从json到parquet文件的转换。

  • 在我的新公司,我是一名数据工程师,负责构建google cloud platform(GCP)批处理ETL管道。我的团队的数据科学家最近给了我一个数据模型(用Python3.6编写的.py文件)。 数据模型有一个主函数,我可以调用它并获得一个dataframe作为输出,我打算将这个dataframe附加到一个bigquery表中。我是否可以只导入这个主函数,并使用apache beam(Dataf