如何将--autoscaling_algorithm=NONE标志传递到python代码中的数据流



我正在使用python dataflow.products((.templates((.lonch((函数启动数据流模板,以启动从jdbc到bigquery模板的数据流作业。

我怎样才能通过"--autoscaling_algorithm=NONE";这个python函数中的标志?

要在python函数本身中禁用自动缩放,请使用PipelineOptions中的autoscaling_algorithm=None。例如:

p = beam.Pipeline(argv=beam_args,options=PipelineOptions(
region='us-central1',autoscaling_algorithm=None,num_workers=2))

或者更详细地说,遵循官方文档:

import apache_beam as beam
from apache_beam.options.pipeline_options import PipelineOptions
options = PipelineOptions(
flags=argv,
runner='DataflowRunner',
project='my-project-id',
job_name='unique-job-name',
temp_location='gs://my-bucket/temp',
region='us-central1',
autoscaling_algorithm=None,
num_workers=2)
with beam.Pipeline(options=options) as pipeline:
# build your pipeline here.

如果您使用python3创建流作业,则可能需要包含实验标志disable_streaming_engine,因为默认情况下它已启用自动缩放,并且会覆盖手动设置的标志。我已经用这些选项创建了一个工作,在10分钟没有互动后,它仍然保留在两个工人身上,所以它似乎工作正常。

编辑:我在后台日志中验证了min_num_workers实验是符合要求的。启动模板时,请添加以下参数以限制作业始终与N个工人一起运行。
  • "additionalExperiments": ["min_num_workers=N"]
  • "maxWorkers": N
  • "numWorkers": N

我认为目标是禁用自动缩放?您可以通过设置maxWorkers=1来实现相同的功能。

https://cloud.google.com/dataflow/docs/reference/rest/v1b3/RuntimeEnvironment

最新更新