Google cloud dataflow 限制每个键的值数
目前,我们有一个数据流流程,其中我们有一个Google cloud dataflow 限制每个键的值数,google-cloud-dataflow,dataflow,apache-beam,Google Cloud Dataflow,Dataflow,Apache Beam,目前,我们有一个数据流流程,其中我们有一个GroupByKey,但是groupby之后的DoPar每个键获得了太多的值,我们想知道是否有一个好的解决方案。据我所知,没有办法设置每个窗口的最大值 目前,我们正在探索3种选择: 较小的窗口-我们认为我们可能仍然有问题,因为事件可能会在时间上聚集在一起 在每个键中添加一个随机值来划分键-这也是不理想的,因为当我们传入的事件较少时,每个键的值就会太少。此外,当事件数呈指数增长时,我们也不能调整分区数 一些花式触发或使用组合器-可能是最好的解决方案,但不知
GroupByKey
,但是groupby之后的DoPar
每个键获得了太多的值,我们想知道是否有一个好的解决方案。据我所知,没有办法设置每个窗口的最大值
目前,我们正在探索3种选择:
有没有标准的方法或最佳实践可以做到这一点?您提到的每一个选项都是可能的,尽管这在一定程度上取决于您以后的计算内容,以及您是在有界数据上运行批处理管道还是在无界数据上运行流式管道
窗口fn
,以限制每个窗口中的元素数量。例如,您可以将每个元素分配给一个窗口,例如(1,[startTime,endTime))
。然后将多个窗口合并在一起,添加它们的计数。一旦计数过高,您将停止合并ParDo
中的计算是关联的和可交换的,那么编写CombineFn
将减少存储的数据量,并将改善批处理和流式处理的总体管道性能CombineFn
开始,然后看看您是否需要寻求其他途径