簡體   English   中英

在Python中為GCP數據流作業指定機器類型

[英]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屬性-我也試過workerMachineTypemachine-typeworker-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM