加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 22:31:10 所属栏目:Python 来源:网络整理
导读:我在Python中使用Apache Beam和Google Cloud Dataflow(2.3.0).将worker_machine_type参数指定为例如n1-highmem-2或custom-1-6656,Dataflow运行该作业,但始终为每个工作人员使用标准机器类型n1-standard-1. 如果我做错了,有没有人知道? 其他主题(here和here)

我在Python中使用Apache Beam和Google Cloud Dataflow(2.3.0).将worker_machine_type参数指定为例如n1-highmem-2或custom-1-6656,Dataflow运行该作业,但始终为每个工作人员使用标准机器类型n1-standard-1.

如果我做错了,有没有人知道?

其他主题(here和here)表明这应该是可能的,因此这可能是版本问题.

我的用于指定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中修复.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读