Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud dataflow 在没有GroupBy的数据上使用FixedWindows_Google Cloud Dataflow - Fatal编程技术网

Google cloud dataflow 在没有GroupBy的数据上使用FixedWindows

Google cloud dataflow 在没有GroupBy的数据上使用FixedWindows,google-cloud-dataflow,Google Cloud Dataflow,我有一个流式管道,它使用带有时间戳的事件。我所要做的就是将它们批处理到每个1分钟的固定窗口中,然后将窗口中的所有事件写入单个GCS文件。我可以使用FixedWindows,除了从文档中可以看到,我需要GroupBy或Combine操作来应用窗口,但是对于我的用例,窗口已经完成了我需要的所有分组。我看到了两种可能的解决方案,但我不确定这两种方案是否理想 将这些项目推入一个GlobalWindow,并重复应用1分钟触发器,丢弃已触发的窗格。我还没有尝试过这个,我不确定如果没有groupBy,它是否

我有一个流式管道,它使用带有时间戳的事件。我所要做的就是将它们批处理到每个1分钟的固定窗口中,然后将窗口中的所有事件写入单个GCS文件。我可以使用
FixedWindows
,除了从文档中可以看到,我需要
GroupBy
Combine
操作来应用窗口,但是对于我的用例,窗口已经完成了我需要的所有分组。我看到了两种可能的解决方案,但我不确定这两种方案是否理想

  • 将这些项目推入一个
    GlobalWindow
    ,并重复应用1分钟触发器,丢弃已触发的窗格。我还没有尝试过这个,我不确定如果没有groupBy,它是否会起作用
  • FixedWindow
    之后运行全局
    合并
    操作-我不确定这是否仍然会考虑窗口

    这些是正确的选择还是有更好的办法


谢谢

首先,我想谈谈你的目标:听起来你想在一个特定的窗口中对所有的值进行分组。为此,您需要一个
GroupByKey
Combine
(用于分组或聚合,实际上与窗口无关)

全局
组合
将考虑该窗口。考虑数据流转换的最佳方式是,它们主要在一个窗口内操作

我还想评论一下你文章的其他方面:

  • 实际上,对于非合并窗口,如
    FixedWindows
    ,该窗口将立即应用于
    window.into(FixedWindow.of(Duration.standardMinutes(1))
    transform
  • 诸如
    AfterProcessingTime.pastFirstElementInPane(Duration.standardMinutes(1))
    之类的触发器不会执行您想要的操作-它表示一个大致的超时。在每个键的基础上,在第一个元素到达后的本地时间一分钟后的某个合理时刻,将发出缓冲的内容。它不对应于一分钟的事件时间,或任何特定事件时间或到达时间窗口