worker_machine_type标签在谷歌云计算数据流不工作与Python

问题描述 投票:5回答:3

我使用的Apache梁在Python与谷歌云数据流(2.3.0)。当指定worker_machine_type参数作为例如n1-highmem-2custom-1-6656,数据流运行工作,但总是使用标准机型为n1-standard-1每一个工人。

没有人有一个想法,如果我做错了什么?

其他主题(herehere)显示,这应该是可能的,所以这可能是一个版本的问题。

我指定PipelineOptions代码(注意,所有其他选项都做工精细,所以应该认识到worker_machine_type参数):

def get_cloud_pipeline_options(project):

  options = {
    'runner': 'DataflowRunner',
    'job_name': ('converter-ml6-{}'.format(
        datetime.now().strftime('%Y%m%d%H%M%S'))),
    'staging_location': os.path.join(BUCKET, 'staging'),
    'temp_location': os.path.join(BUCKET, 'tmp'),
    'project': project,
    'region': 'europe-west1',
    'zone': 'europe-west1-d',
    'autoscaling_algorithm': 'THROUGHPUT_BASED',
    'save_main_session': True,
    'setup_file': './setup.py',
    'worker_machine_type': 'custom-1-6656',
    'max_num_workers': 3,
  }

  return beam.pipeline.PipelineOptions(flags=[], **options)

def main(argv=None):
  args = parse_arguments(sys.argv if argv is None else argv)

  pipeline_options = get_cloud_pipeline_options(args.project_id

  pipeline = beam.Pipeline(options=pipeline_options)
python google-cloud-dataflow apache-beam
3个回答
2
投票

PipelineOptions使用argparse幕后解析它的参数。在机种的情况下,参数的名称是machine_type然而标志名称是worker_machine_type。这在以下两种情况下,如果不argparse及其解析,并意识到这种混淆的正常工作:

  1. 在命令行上传递的参数。例如my_pipeline.py --worker_machine_type custom-1-6656
  2. 传递参数作为命令行标志例如flags['--worker_machine_type', 'worker_machine_type custom-1-6656', ...]

但是它不与**kwargs很好地工作。以这种方式传递的任何额外的参数是用来代替已知的参数名称(但不是标志名称)。

总之,使用machine_type会的工作无处不在。我申请https://issues.apache.org/jira/browse/BEAM-4112这是固定在梁的未来。


2
投票

这可以通过使用该标志,而不是machine_typeworker_machine_type来解决。代码的其余部分工作正常。

因此,documentation被提了错误的字段名。


0
投票

什么在Apache的梁2.8.0工作对我来说是通过改变this line--worker_machine_type更新--machine_type的源代码(再使用machine_type作为参数的名称,如其他答案建议)。

© www.soinside.com 2019 - 2024. All rights reserved.