[英]worker_machine_type tag not working in Google Cloud Dataflow with python
[英]Specifying machine type for a GCP Dataflow job in Python
我有一個由Dataprep生成的Dataflow模板,並且正在使用Composer(即Apache Airflow)執行它。
該任務正在觸發Dataflow作業,但是隨后失敗,並顯示一個錯誤, 根據SO上的帖子 ,該錯誤指示我需要指定具有更高內存的計算機類型。
我在DataflowTemplateOperator
指定machineType
,但是它不適用於Dataflow作業:
dataflow_default_options={
'project': 'projectname',
'zone': 'europe-west1-b',
'tempLocation': 'gs://bucketname-dataprep-working/temp/',
'machineType': 'n1-highmem-4'
},
經調查這一段時間,我已經看到了沖突的建議,以什么調用machineType
屬性-我也試過workerMachineType
, machine-type
和worker-machine-type
無濟於事。
這里有沒有人成功地為DataflowTemplateOperator
指定了工作者類型?
我假設您正在使用基於標簽的Python SDK。 您是否嘗試過執行參數文檔中的Python選項? Python選項拼寫為machine_type
,這是具有下划線的worker_machine_type
的別名。
我以前沒有使用過Composer / Airflow,所以這只是一個建議。
根據鈎子源 , machineType
是模板作業唯一接受的密鑰。 然后,使用您指定的變量來構建對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
)
projects.locations.template.launch
的文檔指定請求主體應為LaunchTemplateParameters
的實例,該實例具有另一個RuntimeEnvironment
。 從鈎子源看來,這是准確的。
您可以采取一些調試步驟:您可以記錄/檢查傳出的REST調用,或在Stackdriver日志記錄中找到該調用(以及因此找到與作業創建請求相關的元數據)。
注意:僅自[AIRFLOW-1954] (這是Airflow v1.10.0發行版的一部分)以來可用。 這意味着它僅在某些Cloud Composer版本中存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.