ParDo 操作应该多小才能获得良好的性能和光束作业的缩放?
How small should be a ParDo operation for good performance and scaling of a beam job?
在数据流管道中,我想在数据流上应用多个小过滤器(ParDo 函数)。
过滤操作并不CPU密集。对于性能和缩放,我应该在单个 ParDo 中执行所有过滤器还是在每个过滤器操作中执行每个 ParDo(更清晰的代码)?
如果您使用的 运行ner 支持融合,并且您在没有组合器/GBK 的情况下直接一个接一个地应用过滤器,那么您的代码将在单个融合步骤中执行。
优化
Beam 运行 用户可以选择在管道执行之前对其应用优化。一个关键的优化,融合,与 ParDo 操作有关。如果一个 ParDo 操作产生一个 PCollection 然后作为另一个 ParDo 操作的主要输入使用,这两个 ParDo 操作将融合在一起成为一个 ParDo 操作和 运行 在单次传递中;这是 "producer-consumer fusion"。
我建议使用更简洁的代码选项并让 运行ner 优化执行。
在数据流管道中,我想在数据流上应用多个小过滤器(ParDo 函数)。
过滤操作并不CPU密集。对于性能和缩放,我应该在单个 ParDo 中执行所有过滤器还是在每个过滤器操作中执行每个 ParDo(更清晰的代码)?
如果您使用的 运行ner 支持融合,并且您在没有组合器/GBK 的情况下直接一个接一个地应用过滤器,那么您的代码将在单个融合步骤中执行。
优化
Beam 运行 用户可以选择在管道执行之前对其应用优化。一个关键的优化,融合,与 ParDo 操作有关。如果一个 ParDo 操作产生一个 PCollection 然后作为另一个 ParDo 操作的主要输入使用,这两个 ParDo 操作将融合在一起成为一个 ParDo 操作和 运行 在单次传递中;这是 "producer-consumer fusion"。
我建议使用更简洁的代码选项并让 运行ner 优化执行。