如何通过 boto 库为 EMR 集群选项配置 "Use AWS Glue Data Catalog for table metadata"?

How to configure "Use AWS Glue Data Catalog for table metadata" for EMR cluster option through boto library?

我正在尝试通过使用 python boto library.However 编写 AWS lambda 函数来创建 EMR 集群 library.However 我能够创建集群,但我想使用 "AWS Glue Data Catalog for table metadata" 这样我可以使用 spark 直接从胶水数据中读取 catalog.While 通过 AWS 用户界面创建 EMR 集群 我通常会选中一个复选框 ("Use AWS Glue Data Catalog for table metadata") 来解决我的 purpose.But 我没有得到任何提示我如何通过 boto 库实现相同的目标。

下面是我用来创建 EMR 集群的 python 代码。

    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))

我没有找到任何线索如何获得 it.Please 帮助。

使用 hive-site 配置分类为 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