beam使用不同的窗口策略连接两个流

时间:2018-01-24 23:25:48

标签: google-cloud-platform spark-streaming google-cloud-dataflow apache-beam stream-processing

我有两个独立的事件流,一个流我有每小时的桶,而另一个流我有4个小时的桶,是否有可能加入这两个流。如何识别两个流上的哪些窗口加入? 我可以在一个流上有一个滑动窗口并将其与另一个流上的固定窗口连接示例用例是我将一个流划分为固定的每分钟/每小时桶但是希望它们与24小时滚动/滑动桶一起加入窗口必须与相同的开始时间对齐。 是否有可能在火花中做到这一点?

1 个答案:

答案 0 :(得分:1)

在数据流中,您可以使用Side Inputs执行您要查找的内容。您的第一个流(unbounded PCollection)将成为ParDo转换的主要输入。您的第二个流将是侧输入。后者将是PCollectionView类型,这是一种将PCollection表示为单个实体的方法,您可以通过调用.withSideInputs将其传递给ParDo转换。由于您的边输入是无限的,因此无法压缩为单个值,因此PCollectionView将代表每个窗口的单个实体。

Regarding different window sizes,Dataflow将主输入元素的窗口投影到侧输入的窗口集中,然后选择最合适的侧输入窗口。在您的示例中,用例数据流将主要(每小时)输入窗口投影到侧面(24小时)输入窗口集,并从相应的24小时侧输入窗口中选择侧输入值。