Конфигурация удаления из режима ожидания для кластера PySpark на GCP - PullRequest
1 голос
/ 18 октября 2019

Я пытаюсь определить функцию создания кластера для создания кластера в Cloud Dataproc. Просматривая справочный материал, я наткнулся на параметр удаления вхолостую ( idleDeleteTtl ), который автоматически удалял кластер, если он не использовался в течение определенного времени. Когда я пытаюсь включить его в конфигурацию кластера, он выдает мне ValueError: Protocol message ClusterConfig has no "lifecycleConfig" field.

Функция создания кластера для справки:

def create_cluster(dataproc, project, zone, region, cluster_name, pip_packages):
    """Create the cluster."""
    print('Creating cluster...')
    zone_uri = \
        'https://www.googleapis.com/compute/v1/projects/{}/zones/{}'.format(
            project, zone)
    cluster_data = {
        'project_id': project,
        'cluster_name': cluster_name,
        'config': {
            'initialization_actions': [{
                'executable_file': 'gs://<some_path>/python/pip-install.sh'
            }],
            'gce_cluster_config': {
                'zone_uri': zone_uri,
                'metadata': {
                        'PIP_PACKAGES': pip_packages
                    }
            },
            'master_config': {
                'num_instances': 1,
                'machine_type_uri': 'n1-standard-1'
            },
            'worker_config': {
                'num_instances': 2,
                'machine_type_uri': 'n1-standard-1'
            },
              'lifecycleConfig': { #### PROBLEM AREA ####
                'idleDeleteTtl': '30m'
            }
        }
    }

    cluster = dataproc.create_cluster(project, region, cluster_data)
    cluster.add_done_callback(callback)
    global waiting_callback
    waiting_callback = True

Я хочу аналогичные функциональные возможности, если не в той же функциисам. У меня уже определена функция удаления вручную, но я хочу добавить функцию автоматического удаления кластеров, когда она не используется.

1 Ответ

2 голосов
/ 18 октября 2019

Вы вызываете API v1, передавая параметр, который является частью v1beta2 API.

Измените свою конечную точку с:

https://www.googleapis.com/compute/v1/projects/{}/zones/{}

На это:

https://www.googleapis.com/compute/v1beta2/projects/{}/zones/{}
...