我们正在使用 Google Dataflow (Apache Beam + Java) 运行批处理数据作业(连接到 BigQuery)。为了限制成本,我们使用 BigQuery 预留(例如,预留 3000 个(任意数量)个槽位)。
问题是,当多个作业同时运行时,我们无法控制所有作业总共会产生多少个工作线程。这可能会导致 BigQuery 抛出类似
Exceeded rate limits: too many api requests per user per method for this user_method (JobService.query)
的错误。
有没有办法设置 Google Dataflow 中可以在所有作业中使用的工作人员总数?
根据我的研究,我们可以使用以下方式:
--maxNumWorkers=120
标志
因此 25 * 120 = 3000 名工人,并且不会超出限制。但这并不理想,因为有些工作可能无法充分利用所有 120 名工人。因此,我想找到一个更直接的解决方案。