Как настроить параметр «Использовать каталог данных AWS Glue для метаданных таблицы» для опции кластера EMR через библиотеку boto? - PullRequest
1 голос
/ 01 мая 2019

Я пытаюсь создать кластер EMR, написав лямбда-функцию AWS с использованием библиотеки python boto. Однако я могу создать кластер, но хочу использовать «Каталог данных клея AWS для метаданных таблицы», чтобы я мог использовать искрунепосредственно при чтении из каталога данных клея. При создании кластера EMR через пользовательский интерфейс AWS я обычно отмечаю флажок («Использовать каталог данных клея AWS для метаданных таблицы»), который решает мою задачу. Но я не понимаю, как можноЯ достигаю того же с помощью библиотеки boto.

Ниже приведен код Python, который я использую для создания кластера EMR.

    try:
        connection = boto3.client(
            'emr',
            region_name='xxx'
        )
        cluster_id = connection.run_job_flow(
            Name='EMR-LogProcessing',
            LogUri='s3://somepath/',
            ReleaseLabel='emr-5.21.0',
            Applications=[
                {
                    'Name': 'Spark'
                },
            ],
            Instances={
                'InstanceGroups': [
                    {
                        'Name': "MasterNode",
                        'Market': 'SPOT',
                        'InstanceRole': 'MASTER',
                        'BidPrice': 'xxx',
                        'InstanceType': 'm3.xlarge',
                        'InstanceCount': 1,
                    },
                    {
                        'Name': "SlaveNode",
                        'Market': 'SPOT',
                        'InstanceRole': 'CORE',
                        'BidPrice': 'xxx',
                        'InstanceType': 'm3.xlarge',
                        'InstanceCount': 2,
                    }
                ],
                'Ec2KeyName': 'xxx',
                'KeepJobFlowAliveWhenNoSteps': True,
                'TerminationProtected': False
            },
            VisibleToAllUsers=True,
            JobFlowRole='EMR_EC2_DefaultRole',
            ServiceRole='EMR_DefaultRole',
            Tags=[
                {
                    'Key': 'Name',
                    'Value': 'EMR-LogProcessing',
                },
                {
                    'Key': 'env',
                    'Value': 'dev',
                },
            ],
        )

        print('cluster created with the step...', cluster_id['JobFlowId'])
    except Exception as exp:
        logger.info("Exception Occured in createEMRcluster!!! %s", str(exp))

Я не нахожу никакой подсказки, как мне этого добиться.Пожалуйста, помогите.

1 Ответ

1 голос
/ 03 мая 2019

Укажите значение для hive.metastore.client.factory.class, используя классификацию конфигурации сайта-улья

[
  {
    "Classification": "hive-site",
    "Properties": {
      "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"
    }
  }
]

Приведенный выше фрагмент кода можно передать в функцию boto run_job_flow с помощью свойства конфигурации.

Ссылка: https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive-metastore-glue.html

...