Trabajar con una jerarquía de varios catálogos en AWS Glue Data Catalog 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.

Trabajar con una jerarquía de varios catálogos en AWS Glue Data Catalog con Spark en Amazon EMR

Puedes registrar tu EMR clúster de Amazon 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 un metaalmacén de Hive API y un Apache Iceberg REST API de código abierto para acceder a los datos. Estas funciones están disponibles para Amazon EMR y otros servicios, como Amazon Athena 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 SQL motor compatible con el metaalmacén Apache Iceberg REST API o 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 banco de datos, como esquemas o tablas.

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

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

  • 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 los datos subyacentes, que pueden estar en varios formatos y en diferentes ubicaciones.

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

Para empezar, debes configurar el catálogo para que sea compatible con EMR las herramientas de Amazon. El catálogo de datos de AWS Glue es compatible con Hive Metastore y con IcebergREST. APIs

Configuración de Amazon EMR con una metatienda 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 EMR documentación de Amazon disponible que muestra cómo especificar el catálogo de datos de AWS Glue como un metaalmacén de Spark, en Usar el catálogo de datos de AWS Glue como el metaalmacén 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 IAM de la política para utilizar EMR las herramientas de Amazon con los 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, al asignar permisos, se recomienda crear un IAM rol y asignarle permisos.

Además, para consultar los datos del catálogo, debe configurar los permisos para el catálogo de datos mediante AWS Lake Formation. Para obtener más información sobre cómo configurar los permisos para los catálogos de datos AWS Lake Formation, consulte Concesión y revocación de permisos en los recursos del catálogo de datos.

Tras crear y configurar el clúster y establecer los permisos en 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 la EMR versión 7.5, puedes configurar Spark para que utilice la jerarquía de catálogos múltiples de AWS Glue. Una jerarquía de varios catálogos te 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 EC2 y Serverless. EMR

  • Cree RMS catálogos, AWS Glue Data Catalog y almacene datos RMS con Zero ETL 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 a un catálogo múltiple al inicializar una sesión de Spark

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

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

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

    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 medianteSSH. Para obtener más información, consulte Conectarse al nodo principal mediante SSH la Guía EMR de administración de Amazon.

  2. Ingresa 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 inicializar una sesión de Spark con libretas de EMR Studio, configura tu sesión de Spark con el comando %%configure mágico de tu EMR libreta de Amazon, como en el siguiente ejemplo. Para obtener más información, consulta Cómo usar EMR Notebooks magics en la Amazon EMR Management Guide.

%%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 con elCLI, ejecuta el siguiente ejemplo. Para obtener más información sobre cómo especificar una clasificación de configuración mediante AWS CLI y Amazon EMRAPI, 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 comando de ejemplo inicializa 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 el catálogo de datos Glue Managed Storage with Glue AWS de Iceberg y REST API Redshift.

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 de una configuración de varios catálogos

  • No se admite el uso de una jerarquía de varios catálogos con el metaalmacén de Apache Hive.

  • El uso de una jerarquía de varios catálogos con Apache Iceberg no permite recurrir al metaalmacén de Apache Hive cuando se utiliza. SparkSessionCatalog

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

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