Указание типа машины для задания потока данных GCP в Python - PullRequest
1 голос
/ 18 апреля 2019

У меня есть шаблон потока данных, сгенерированный Dataprep, и я выполняю его с помощью Composer (т. Е. Apache Airflow).

Задача запускает задание Поток данных, но затем происходит сбой с ошибкой, которая согласно сообщениям на SO указывает, что мне нужно указать тип машины с большим объемом памяти.

Я указываю machineType в DataflowTemplateOperator, но это не относится к заданию потока данных:

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?

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

В соответствии с источником подключения , 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.

1 голос
/ 18 апреля 2019

Я предполагаю, что вы используете Python SDK на основе тега. Вы пробовали опции Python из документации параметров выполнения ? Параметр Python записан machine_type, что является псевдонимом для worker_machine_type с подчеркиванием.

Я раньше не использовал Composer / Airflow, так что это всего лишь совет.

...