Google cloud dataflow 在Dataflow 2.1.0中是否有替代内部捆绑并行化的方法?

Google cloud dataflow 在Dataflow 2.1.0中是否有替代内部捆绑并行化的方法?,google-cloud-dataflow,dataflow,Google Cloud Dataflow,Dataflow,根据dataflow 2.X的发行说明,IntraBundleParallelization被删除。在dataflow 2.1.0上是否有控制/增加DoFns并行性的方法 当我在1.9.0版本的dataflow上使用IntrabundleParallelization时,我获得了更好的性能。它被删除,因为它的实现在调用完成后在ProcessElement调用的ProcessContext上保留了一个句柄,这是不安全的,不能保证工作 然而,我同意这是一个有用的抽象概念,不幸的是我们还没有替代品 作

根据dataflow 2.X的发行说明,IntraBundleParallelization被删除。在dataflow 2.1.0上是否有控制/增加DoFns并行性的方法


当我在1.9.0版本的dataflow上使用IntrabundleParallelization时,我获得了更好的性能。

它被删除,因为它的实现在调用完成后在ProcessElement调用的ProcessContext上保留了一个句柄,这是不安全的,不能保证工作

然而,我同意这是一个有用的抽象概念,不幸的是我们还没有替代品

作为解决方法,您可以尝试以下操作:

在DoFn的@Setup中,创建一个具有所需线程数的执行器 在DoFn的@StartBundle中,创建一个包装执行器的ExecutorCompletionService 在@ProcessElement中,向它提交一个表示处理元素结果的未来 在@ProcessElement中,还轮询CompletionService以获取已完成的期货并输出其结果 在@FinishBundle中,等待所有剩余的期货完成,输出结果,并关闭CompletionService。 记住不要在将来使用ProcessContext。ProcessContext只能从当前线程和当前ProcessElement调用中使用