我有两个独立的事件流,一个流我有小时桶,另一个流我有 4 小时桶,是否可以加入这两个流。我如何确定要加入两个流上的哪些窗口?我可以在一个流上有一个滑动窗口并将其与另一个流上的固定窗口连接吗?示例用例是我将一个流划分为固定的每分钟/每小时桶,但希望它们加入窗口必须的 24 小时滚动/滑动桶与相同的开始时间对齐。有可能在 spark 中这样做吗?
问问题
915 次
1 回答
1
在数据流中,您可以使用Side Inputs做您正在寻找的事情。您的第一个流(无界 PCollection)将是 ParDo 转换的主要输入。您的第二个流将是侧面输入。后者将是PCollectionView类型,这是一种将 PCollection 表示为单个实体的方式,您可以通过调用 .withSideInputs 将其传递给 ParDo 转换。由于您的侧面输入是无限的,因此无法压缩为单个值,因此 PCollectionView 将代表每个窗口的单个实体。
对于不同的窗口大小,Dataflow 将主输入元素的窗口投影到侧输入的窗口集中,然后选择最合适的侧输入窗口。在您的示例用例数据流中,将主(每小时)输入窗口投射到侧面(24 小时)输入窗口集,并从适当的 24 小时侧面输入窗口中选择侧面输入值。
于 2018-01-25T09:59:02.377 回答