问题描述
我有一个管道,可将绑定的数据源转换为一组RPC,以将其转换为第三方系统,并且希望在批量请求效率和强制最大批量之间取得合理的平衡。 GroupIntoBatches
在这种情况下是否适合使用转换?我应该注意有关批处理模式效率的问题吗?
基于unit tests,看来将为有限来源发出“最终”批次(即使它不构成完整批次),对吗?
解决方法
我认为GroupIntoBatches
是此用例的好方法。保持在
请注意,此转换使用KV对,而您想要实现的并行性将受到密钥数量的限制。我建议看看this的答案。
关于批次大小,是的,如果没有足够的元素,则批次的大小可能会较小。看一下光束Python documentation的有趣示例:
, sys.exit()
将起作用。如果您正在运行批处理管道,并且没有要进行分组的自然键(随机进行分组,则批次通常会太小或并行度太小,并且与液体分片之间的交互性很差),您应该考虑使用BatchElements代替,它可以不使用键进行批处理,并且可以配置为固定或动态批处理大小。