Google cloud dataflow Apache Beam:自定义窗口(windowfn)

Google cloud dataflow Apache Beam:自定义窗口(windowfn),google-cloud-dataflow,apache-beam,dataflow,windowing,Google Cloud Dataflow,Apache Beam,Dataflow,Windowing,大师-我对ApacheBeam还不熟悉,并且正在尝试实现一个非常简单的用例。我有股票数据,我需要找到过去10笔交易中股票的滚动平均价格 现在,由于没有固定的持续时间,10个事务可以发生(有时可能是几毫秒,有时可能是几秒钟),我认为我不能使用基于时间的窗口。我有两个问题: 这是Beam的一个有效用例还是我在这里遗漏了一点 是否有一种合理的简单/合法/非黑客方式来编写 窗口化函数/类(在python sdk中),可以基于数据打开窗口 关于记录的数量 我看到过一些建议,建议在记录上伪造时间戳数据,使每

大师-我对ApacheBeam还不熟悉,并且正在尝试实现一个非常简单的用例。我有股票数据,我需要找到过去10笔交易中股票的滚动平均价格

现在,由于没有固定的持续时间,10个事务可以发生(有时可能是几毫秒,有时可能是几秒钟),我认为我不能使用基于时间的窗口。我有两个问题:

  • 这是Beam的一个有效用例还是我在这里遗漏了一点
  • 是否有一种合理的简单/合法/非黑客方式来编写 窗口化函数/类(在python sdk中),可以基于数据打开窗口 关于记录的数量
  • 我看到过一些建议,建议在记录上伪造时间戳数据,使每个到达的记录看起来像是创建的,比如说相隔一秒钟,但我发现这有两个问题:

    a。这是一个真正的黑客解决方案,它似乎与梁这样的东西格格不入,而梁应该是如此强大和优雅的架构

    b。如果您打算首先通过使用程序顺序添加假时间戳来抑制性能,那么使用高性能梁管道(无服务器)有什么意义


    想知道Beam中的窗口是否是一种更优雅的解决方案

    这是批处理还是流式作业?如果是前者,我认为自定义时间戳方法将比编写自定义窗口函数更容易。默认梁滑动窗口和会话仅接受时间(持续时间/间隙)规范。如果它是流式的,请考虑到Python SDK支持到目前为止是实验性的,您可能需要根据实现的用例使用Java SDK。我正在考虑一个全局窗口,它有一个重复的数据驱动触发器,并丢弃在至少10个元素之后触发的窗格,但它可能不能保证正好有10个事务。嗨,Guillem-我试图避免区分接收到的数据是否是批处理的,这有两个原因:a。可以是b和b。对于beam,批量或流式处理,您应该能够始终如一地处理这两者,这不是它的一个关键值命题吗?我建议使用转换,在每个键和窗口接收10个(batchSize)元素时缓冲值并输出它们。它可以处理批处理或流式处理作业。如果只需要全局平均值,请为所有元素指定相同的键。缺点是它似乎不适用于Python SDK。你可以找到一个最近的例子。