Trabajo con una jerarquía de varios catálogos en el Catálogo de datos de AWS Glue con Spark en Amazon EMR - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Trabajo con una jerarquía de varios catálogos en el Catálogo de datos de AWS Glue con Spark en Amazon EMR

Puede registrar su clúster de Amazon EMR para acceder al catálogo de datos de AWS Glue, que pone las tablas y otros recursos del catálogo a disposición de varios consumidores. AWS Glue Data Catalog admite una jerarquía de varios catálogos, que unifica los datos en los lagos de datos de Amazon S3. También proporciona una API del metastore de Hive y una API REST de Apache Iceberg de código abierto para acceder a los datos. Estas características están disponibles para Amazon EMR y otros servicios como Amazon Athena y Amazon Redshift.

Cómo se organizan los recursos del catálogo

Al crear recursos en el catálogo de datos de AWS Glue, puede acceder a ellos desde cualquier motor SQL que admita la API REST de Apache Iceberg o el metaalmacén de Hive. AWS Lake Formation gestiona los permisos.

En AWS Glue Data Catalog, los datos se organizan en una jerarquía lógica de catálogos, bases de datos y tablas:

  • Catálogo: contenedor lógico que contiene objetos de un almacén de datos, como esquemas o tablas.

  • Catálogo para almacenar tablas de Redshift Managed Storage (RMS): cuando administra catálogos para almacenar tablas RMS, puede acceder a esas tablas mediante Iceberg.

  • Base de datos: organiza los objetos de datos de un catálogo, como tablas y vistas.

  • Tablas y vistas: objetos de datos de una base de datos que proporcionan una capa de abstracción con un esquema comprensible. Proporcionan una capa para acceder a datos en distintos formatos y ubicaciones.

Configuración de un catálogo de datos para usarlo con Amazon EMR

Para comenzar, debe configurar el catálogo para que admita las herramientas de Amazon EMR. El catálogo de datos de AWS Glue es compatible con Hive Metastore y con Iceberg REST. APIs

Configuración de Amazon EMR con un metalmacén de Hive

Para obtener información sobre cómo configurarlo, consulta la compatibilidad del catálogo de datos de AWS Glue para trabajos de Spark en la Guía del usuario de AWS Glue. En este tema se describe cómo configurar el catálogo de datos de AWS Glue como un metaalmacén de Hive y hacer que esté disponible como punto final. Además, hay documentación de Amazon EMR disponible que muestra cómo especificar el catálogo de datos de AWS Glue como un metaalmacén de Spark, en Use the AWS Glue Data Catalog como metastore de Apache Hive para Spark.

Permisos para acceder a los recursos del catálogo de datos de AWS Glue

En esta sección, se describen los requisitos de políticas de IAM para usar las herramientas de Amazon EMR con datos del catálogo. Tras registrar el clúster en el catálogo de datos de AWS Glue, necesitará los siguientes permisos para descubrir la creación y los cambios en el catálogo de datos creado posteriormente:

  • pegamento: GetCatalog

  • pegamento: GetCatalogs

  • conjuntos: AssumeRole

  • conjuntos: TagSession

  • conjuntos: SetContext

  • conjuntos: SetSourceIdentity

En la mayoría de los casos, recomendamos crear un rol de IAM y asignarle los permisos necesarios.

Además, para consultar datos del catálogo, usted debe establecer permisos para el catálogo mediante AWS Lake Formation. Para más información sobre cómo establecer permisos en catálogos de datos mediante AWS Lake Formation, consulte Granting and revoking permissions on Data Catalog resources.

Una vez que configure su clúster y defina los permisos sobre los objetos del catálogo, puede enviar trabajos para consultar y procesar datos.

Configurar Spark para acceder a una jerarquía de varios catálogos en AWS Glue Data Catalog

Con EMR 7.5, puedes configurar Spark para que utilice la jerarquía multicálogos de AWS Glue. Una jerarquía de múltiples catálogos permite:

  • Lleve sus datos de Redshift Managed Storage (RMS), como tablas, vistas y vistas materializadas de los almacenes de datos de Amazon Redshift existentes, a Glue Data Catalog. AWS Puede consultar estos objetos mediante EMR on y EMR EC2 Serverless.

  • Cree catálogos RMS, AWS Glue Data Catalog y almacene datos en RMS con ZeroETL y consulte los datos con motores de consulta compatibles con Iceberg.

  • Cree tablas Iceberg gestionadas en AWS Glue Data Catalog con una gestión de almacenamiento completa que incluye compactación, instantáneas y retención.

Conexión con varios catálogos al iniciar una sesión de Spark

Los siguientes ejemplos muestran cómo usar Spark shell interactivo, Spark submit o Amazon EMR Notebooks para trabajar AWS con la jerarquía de múltiples catálogos de Glue.

spark-shell
  1. Conéctese al nodo principal utilizando SSH. Para obtener más información, consulte Conexión al nodo maestro mediante SSH en la Guía de administración de Amazon EMR.

  2. Introduzca el siguiente comando para iniciar el shell de Spark. Para usar la PySpark carcasa, sustitúyala por. spark-shell pyspark

    spark-shell \ --conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.my_catalog.warehouse=s3://amzn-s3-demo-bucket/prefix/ --conf spark.sql.catalog.my_catalog.type=glue \ --conf spark.sql.catalog.my_catalog.glue.id=Glue RMS catalog ID \ --conf spark.sql.defaultCatalog=my_catalog \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
spark-submit
  1. Conéctese al nodo principal utilizando SSH. Para obtener más información, consulte Conexión al nodo maestro mediante SSH en la Guía de administración de Amazon EMR.

  2. Ingrese el siguiente comando para iniciar la sesión de Spark para Spark.

    spark-submit \ --conf spark.sql.catalog.my_catalog=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.my_catalog.warehouse=s3://amzn-s3-demo-bucket1/prefix \ --conf spark.sql.catalog.my_catalog.type=glue \ --conf spark.sql.catalog.my_catalog.glue.id=Glue RMS catalog ID \ --conf spark.sql.defaultCatalog=my_catalog \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
EMR Studio notebooks

Para iniciar una sesión de Spark con los Cuadernos de Amazon EMR, configure su sesión de Spark con el comando mágico %%configure de su cuaderno de Amazon EMR, como en el siguiente ejemplo. Para obtener más información, consulte Usar la magia de Cuadernos de Amazon EMR en la Guía de administración de Amazon EMR.

%%configure -f{ "conf":{ "spark.sql.catalog.my_catalog":"org.apache.iceberg.spark.SparkCatalog", "spark.sql.catalog.my_catalog.type":"glue", "spark.sql.catalog.my_catalog.glue.id":"Glue RMS catalog ID", "spark.sql.catalog.my_catalog.warehouse":"s3://amzn-s3-demo-bucket1/prefix/", "spark.sql.defaultCatalog", "my_catalog", "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" } }
CLI

Para inicializar una sesión de Spark mediante la CLI, ejecute el siguiente ejemplo. Para obtener más información sobre cómo especificar una clasificación de configuración mediante la API Amazon EMR AWS CLI y Amazon EMR, consulte Configurar aplicaciones.

[ { "Classification": "spark-defaults", "Properties": { "spark.sql.catalog.my_catalog":"org.apache.iceberg.spark.SparkCatalog", "spark.sql.catalog.my_catalog.type":"glue", "spark.sql.catalog.my_catalog.glue.id":"Glue RMS catalog ID", "spark.sql.catalog.my_catalog.warehouse":"s3://amzn-s3-demo-bucket1/prefix/", "spark.sql.defaultCatalog", "my_catalog", "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" } } ]

Inicie una sesión de Spark en Redshift Managed Storage con AWS Glue Data Catalog

El siguiente ejemplo inicia una sesión de Spark con el Catálogo de datos de AWS Glue.

spark-sql \ --conf spark.sql.catalog.rms=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.rms.type=glue \ --conf spark.sql.catalog.rms.glue.id=Glue RMS catalog ID \ --conf spark.sql.defaultCatalog=rms --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

El siguiente ejemplo inicializa una sesión de Spark con la API REST de Iceberg y Redshift Managed Storage with Glue AWS Data Catalog.

spark-sql \ --conf spark.sql.catalog.rms=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.rms.type=rest \ --conf spark.sql.catalog.rms.warehouse=glue RMS catalog ID \ --conf spark.sql.catalog.rms.uri=Glue endpoint URI/iceberg \ --conf spark.sql.catalog.rms.rest.sigv4-enabled=true \ --conf spark.sql.catalog.rms.rest.signing-name=glue \ --conf spark.sql.defaultCatalog=rms \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions

Para obtener más información sobre el uso de una jerarquía de catálogos múltiples de AWS Glue con Spark Iceberg, consulta Usar un clúster de Iceberg con Spark.

Consideraciones y limitaciones para una configuración con varios catálogos

  • Una jerarquía de varios catálogos no admite el metalmacén de Apache Hive.

  • Una jerarquía de varios catálogos con Apache Iceberg no permite recurrir al metalmacén de Apache Hive cuando se usa SparkSessionCatalog.

  • Los EMR en EC2 los clústeres con la función Runtime no admiten la jerarquía de varios catálogos.

  • Los EMR en EC2 los clústeres habilitados AWS Lake Formation no admiten la jerarquía de varios catálogos.