worker_machine_type标记在使用python的Google Cloud Dataflow中无效

前端之家收集整理的这篇文章主要介绍了worker_machine_type标记在使用python的Google Cloud Dataflow中无效前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在Python中使用Apache Beam和Google Cloud Dataflow(2.3.0).将worker_machine_type参数指定为例如n1-highmem-2或custom-1-6656,Dataflow运行该作业,但始终为每个工作人员使用标准机器类型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)
最佳答案
PipelineOptions在幕后使用argparse来解析其参数.在机器类型的情况下,参数的名称是machine_type,但是标志名称是worker_machine_type.这在以下两种情况下工作正常,其中argparse进行解析并知道这种别名:

>在命令行上传递参数.例如my_pipeline.py –worker_machine_type custom-1-6656
>将参数作为命令行标记传递,例如flags [‘ – worker_machine_type’,’worker_machine_type custom-1-6656′,…]

然而它与** kwargs不兼容.以这种方式传递的任何其他args用于替换已知的参数名称(但不是标志名称).

简而言之,使用machine_type可以在任何地方使用.我提交了https://issues.apache.org/jira/browse/BEAM-4112,以便将来在Beam中修复.

原文链接:https://www.f2er.com/python/438866.html

猜你在找的Python相关文章