在有界源上使用GroupIntoBatch

问题描述

我有一个管道,可将绑定的数据源转换为一组RPC,以将其转换为第三方系统,并且希望在批量请求效率和强制最大批量之间取得合理的平衡。 GroupIntoBatches在这种情况下是否适合使用转换?我应该注意有关批处理模式效率的问题吗?

基于unit tests,看来将为有限来源发出“最终”批次(即使它不构成完整批次),对吗?

解决方法

我认为GroupIntoBatches是此用例的好方法。保持在 请注意,此转换使用KV对,而您想要实现的并行性将受到密钥数量的限制。我建议看看this的答案。

关于批次大小,是的,如果没有足够的元素,则批次的大小可能会较小。看一下光束Python documentation的有趣示例:

GroupIntoBatches

,

sys.exit()将起作用。如果您正在运行批处理管道,并且没有要进行分组的自然键(随机进行分组,则批次通常会太小或并行度太小,并且与液体分片之间的交互性很差),您应该考虑使用BatchElements代替,它可以不使用键进行批处理,并且可以配置为固定或动态批处理大小。