我使用param --number_of_worker_harness_threads=5
(流模式)部署了数据流作业。
接下来,我发送20条PubSub消息,触发20条从GCS加载大CSV文件并开始处理。在日志中,我看到作业接收了10条消息,并在6-8个线程上并行处理(我检查了几次,有时是6,有时是8)。尽管如此,所有的时间都超过了5。
知道它是怎么工作的吗?这似乎不是预期的行为。
发布于 2022-10-04 06:12:01
从标志名判断,您使用的是。对于Python,当前实现中在一个工作VM上运行DoFns的线程总数可以达到--number_of_worker_harness_threads
中提供的值,乘以在工作程序上运行的SDK进程数(默认情况下是vCPU内核的数量)。有一种方法可以将进程数限制为1,而不管vCPU的数量是多少。为此,设置--experiments=no_use_multiple_sdk_containers
。例如,如果您使用的是--machine_type=n1-standard-2
和--number_of_worker_harness_threads=5
,那么在同一台机器上并发运行的不同线程中可能有多达10个DoFn实例。
如果未指定--number_of_worker_harness_threads
,则每个进程最多使用12个线程。另见:https://cloud.google.com/dataflow/docs/resources/faq#how_many_instances_of_dofn_should_i_expect_dataflow_to_spin_up_
https://stackoverflow.com/questions/73190687
复制相似问题