在Python中为GCP数据流作业指定机器类型

2024-04-27 15:57:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个由Dataprep生成的数据流模板,并正在使用Composer(即apacheflow)执行它。在

任务正在触发数据流作业,但随后失败,并出现错误,according to posts on SO表示我需要指定具有更高内存的计算机类型。在

我在DataflowTemplateOperator中指定machineType,但它不适用于数据流作业:

dataflow_default_options={
    'project': 'projectname',
    'zone': 'europe-west1-b',
    'tempLocation': 'gs://bucketname-dataprep-working/temp/',
    'machineType': 'n1-highmem-4'
},

经过一段时间的研究,我看到了关于如何称呼machineType属性的相互矛盾的建议—我也尝试过workerMachineTypemachine-type和{},但都没有结果。在

这里是否有人成功地为DataflowTemplateOperator指定了工作类型?在


Tags: to模板类型soon错误作业数据流
2条回答

根据hook sourcemachineType是模板作业唯一可接受的密钥。然后,您指定的变量将用于构建对REST API的请求,如下所示:

# RuntimeEnvironment
environment = {}
for key in ['maxWorkers', 'zone', 'serviceAccountEmail', 'tempLocation',
            'bypassTempDirValidation', 'machineType', 'network', 'subnetwork']:
    if key in variables:
        environment.update({key: variables[key]})

# LaunchTemplateParameters
body = {"jobName": name,
        "parameters": parameters,
        "environment": environment}

# projects.locations.template.launch
service = self.get_conn()
request = service.projects().locations().templates().launch(
    projectId=variables['project'],
    location=variables['region'],
    gcsPath=dataflow_template,
    body=body
)

^{}的文档指定请求主体应该是^{}的一个实例,它有另一个{a4}。从hook源代码来看,这似乎是准确的。在

您可以采取一些调试步骤:您可以记录/检查传出的REST调用,或者在Stackdriver日志记录中找到该调用(以及与作业创建请求相关的元数据)。在

注意:这只在[AIRFLOW-1954]之后才可用,这是AirflowV1.10.0版本的一部分。这意味着它只存在于特定的cloudcomposer版本中。在

我假设您使用的是基于标记的pythonsdk。 您是否尝试过execution parameter documentation中的Python选项? Python选项拼写为machine_type,它是{}的别名,带有下划线。在

我以前没有使用过Composer/flow,所以这只是一个建议。在

相关问题 更多 >