Usa el catálogo de 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.

Usa el catálogo de AWS Glue Data Catalog con Spark en Amazon EMR

Con la versión 5.8.0 o posterior de Amazon EMR, puedes configurar Spark para que utilice el catálogo de datos de AWS Glue como metaalmacén de Apache Hive. Recomendamos esta configuración cuando necesites un metastore de Hive persistente o uno de Hive compartido por distintos clústeres, servicios, aplicaciones o cuentas. AWS

Con Amazon EMR versión 6.5.0 o posterior, puedes configurar Spark para que utilice el catálogo de datos de AWS Glue con Apache Iceberg.

Con la versión 7.5.0 o posterior de Amazon EMR, puedes configurar Spark para que utilice el catálogo de datos de AWS Glue como su catálogo REST de Iceberg.

AWS Glue es un servicio de extracción, transformación y carga (ETL) totalmente gestionado que permite clasificar los datos, limpiarlos, enriquecerlos y moverlos de forma fiable entre varios almacenes de datos de forma sencilla y rentable. El catálogo de datos de AWS Glue proporciona un repositorio de metadatos unificado en una variedad de fuentes y formatos de datos, y se integra con Amazon EMR, así como con Amazon RDS, Amazon Redshift, Redshift Spectrum, Athena y cualquier aplicación compatible con el metaalmacén de Apache Hive. AWS Los rastreadores de Glue pueden deducir automáticamente el esquema a partir de los datos de origen en Amazon S3 y almacenar los metadatos asociados en el catálogo de datos. Para obtener más información sobre el catálogo de datos, consulte Cómo rellenar el catálogo de datos de AWS Glue en la Guía del desarrollador de AWS Glue.

Se aplican cargos separados por AWS Glue. Hay una tarifa mensual para almacenar y acceder a los metadatos del catálogo de datos, una tarifa por hora que se factura por minuto para los trabajos de ETL de AWS Glue y el tiempo de ejecución del rastreador, y una tarifa por hora que se factura por minuto para cada terminal de desarrollo aprovisionado. El Catálogo de datos le permite almacenar hasta un millón de objetos sin cargo alguno. Si almacena más de un millón de objetos, se le cobrará 1 USD por cada 100 000 objetos que sobrepasen esa cifra. En el Catálogo de datos, se consideran objetos las tablas, las particiones y las bases de datos. Para obtener más información, consulte Precios de Glue.

importante

Si creó tablas con Amazon Athena o Amazon Redshift Spectrum antes del 14 de agosto de 2017, las bases de datos y las tablas se almacenan en un catálogo gestionado por Athena, que es independiente del catálogo de datos de Glue. AWS Para integrar Amazon EMR con estas tablas, debe actualizar al catálogo de datos de AWS Glue. Para obtener más información, consulte Actualización al catálogo de datos de AWS Glue en la Guía del usuario de Amazon Athena.

Especificar AWS Glue Data Catalog como metastore de Apache Hive

Puedes especificar el catálogo de datos de AWS Glue como metastore mediante la AWS Management Console API AWS CLI, o Amazon EMR. Cuando utiliza la CLI o la API, utiliza la clasificación de configuración de Spark para especificar el catálogo de datos. Además, con Amazon EMR 5.16.0 y versiones posteriores, puede usar la clasificación de configuración para especificar un catálogo de datos en otro. Cuenta de AWS Cuando utiliza la consola, puede especificar el Catálogo de datos mediante Opciones avanzadas u Opciones rápidas.

nota

La opción de usar AWS Glue Data Catalog también está disponible con Zeppelin porque Zeppelin se instala con los componentes de Spark.

Console
Para especificar AWS Glue Data Catalog como el metaalmacén de Apache Hive con la nueva consola
  1. Inicie sesión en y abra la AWS Management Console consola de Amazon EMR en https://console.aws.amazon.com /emr.

  2. En Amazon EMR, EC2 en el panel de navegación izquierdo, selecciona Clústeres y, a continuación, selecciona Crear clúster.

  3. En Paquete de aplicaciones, seleccione Spark o Personalizado. Si personaliza el clúster, asegúrese de seleccionar Zeppelin o Spark como una de sus aplicaciones.

  4. En Configuración del Catálogo de datos de AWS Glue, seleccione la casilla Usar para metadatos de la tabla de Spark.

  5. Elija cualquier otra opción que se aplique a su clúster.

  6. Para lanzar el clúster, elija Crear clúster.

AWS CLI
Para especificar el catálogo de datos de AWS Glue como el metaalmacén de Apache Hive con AWS CLI

Para obtener más información sobre cómo especificar una clasificación de configuración mediante la AWS CLI API de Amazon EMR, consulte. Configuración de aplicaciones

  • Especifique el valor de hive.metastore.client.factory.class utilizando la clasificación spark-hive-site que se muestra en el ejemplo siguiente:

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

    Para especificar un catálogo de datos en una AWS cuenta diferente, añada la hive.metastore.glue.catalogid propiedad tal y como se muestra en el siguiente ejemplo. Sustituya acct-id por la cuenta de AWS del Catálogo de datos.

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

Especificar AWS Glue Data Catalog como catálogo de Apache Iceberg

Puedes especificar el catálogo de datos de AWS Glue como la implementación del catálogo de Apache Iceberg o el punto final del catálogo REST de Apache Iceberg, mediante la AWS Management Console API Amazon EMR o en la AWS CLI configuración de tiempo de ejecución de sesión de Spark. Cuando utiliza la CLI o la API, utiliza la clasificación de configuración de Spark para especificar el catálogo de datos. Para obtener más información, consulte Especificar el catálogo de datos de AWS Glue como el catálogo de Apache Iceberg.

Permisos de IAM

El perfil de EC2 instancia de un clúster debe tener permisos de IAM para las acciones de AWS Glue. Además, si habilita el cifrado de los objetos del catálogo de datos de AWS Glue, el rol también debe poder cifrar, descifrar y generar lo que AWS KMS key se utiliza para el cifrado.

Permisos para las acciones de AWS Glue

Si utiliza el perfil de EC2 instancia predeterminado para Amazon EMR, no es necesario realizar ninguna acción. La política AmazonElasticMapReduceforEC2Role gestionada que se adjunta a la EMR_EC2_DefaultRole permite todas las acciones de AWS Glue necesarias. Sin embargo, si especificas un perfil de EC2 instancia y permisos personalizados, debes configurar las acciones de AWS Glue adecuadas. Utilice la política administrada AmazonElasticMapReduceforEC2Role como punto de partida. Para obtener más información, consulte Función de servicio para EC2 instancias de clúster (perfil de EC2 instancia) en la Guía de administración de Amazon EMR.

Permisos para cifrar y descifrar AWS Glue Data Catalog

El perfil de instancia necesita permiso para cifrar y descifrar los datos con su clave. No es necesario configurar estos permisos si se cumplen las dos instrucciones siguientes:

  • Para activar el cifrado de los objetos del catálogo de datos de AWS Glue, utilice claves gestionadas para AWS Glue.

  • Usas un clúster que está en el mismo lugar Cuenta de AWS que el catálogo de datos de AWS Glue.

De lo contrario, debes añadir la siguiente declaración a la política de permisos adjunta a tu perfil de EC2 instancia.

[ { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:acct-id:key/12345678-1234-1234-1234-123456789012" } ] } ]

Para obtener más información sobre el cifrado del catálogo de datos de AWS Glue, consulte Cifrar el catálogo de datos en la Guía para desarrolladores de AWS Glue.

Permisos basados en recursos

Si usa AWS Glue junto con Hive, Spark o Presto en Amazon EMR, AWS Glue admite políticas basadas en recursos para controlar el acceso a los recursos del catálogo de datos. Estos recursos incluyen bases de datos, tablas, conexiones y funciones definidas por el usuario. Para obtener más información, consulte Políticas de recursos de AWS Glue en la Guía para desarrolladores de AWS Glue.

Al utilizar políticas basadas en recursos para limitar el acceso a AWS Glue desde Amazon EMR, el principal que especifique en la política de permisos debe ser el ARN de rol asociado al perfil de EC2 instancia que se especifica al crear un clúster. Por ejemplo, para una política basada en recursos adjunta a un catálogo, puede especificar el ARN del rol para el rol de servicio predeterminado para las EC2 instancias de clúster, EMR_EC2_DefaultRole como elPrincipal, con el formato que se muestra en el siguiente ejemplo:

arn:aws:iam::acct-id:role/EMR_EC2_DefaultRole

acct-idPuede ser diferente del ID de la cuenta de AWS Glue. Esto permite el acceso desde clústeres de EMR en diferentes cuentas. Puede especificar varias entidades principales, cada una de ellas desde una cuenta diferente.

Consideraciones a la hora de utilizar el Catálogo de datos de AWS Glue

Ten en cuenta lo siguiente cuando utilices AWS Glue Data Catalog como un metaalmacén de Apache Hive con Spark:

  • Una base de datos predeterminada sin un URI de ubicación genera errores al crear una tabla. Para solucionar este problema, utilice la cláusula LOCATION para especificar la ubicación de un bucket, como s3://amzn-s3-demo-bucket1, cuando utilice CREATE TABLE. Otra opción consiste en crear tablas dentro de una base de datos distinta de la base de datos predeterminada.

  • No se admite el cambio de nombre de las tablas desde AWS Glue.

  • Al crear una tabla de Hive sin especificar un valor de LOCATION, los datos de la tabla se almacenan en la ubicación especificada por la propiedad hive.metastore.warehouse.dir. De manera predeterminada, se trata de una ubicación en HDFS. Si otro clúster necesita acceder a la tabla, se produce un error a menos que tenga los permisos adecuados para el clúster que creó la tabla. Además, dado que el almacenamiento en HDFS es transitorio, si el clúster termina, se pierden los datos de la tabla y, por lo tanto, será necesario volver a crearla. Le recomendamos que especifique una LOCATION en Amazon S3 cuando cree una tabla Hive con AWS Glue. Como alternativa, puede utilizar la clasificación de configuración hive-site para especificar una ubicación en Amazon S3 para hive.metastore.warehouse.dir, que se aplica a todas las tablas de Hive. Si se crea una tabla en una ubicación de HDFS y el clúster que la creó sigue ejecutándose, puedes actualizar la ubicación de la tabla a Amazon S3 desde AWS Glue. Para obtener más información, consulte Cómo trabajar con tablas en la consola de AWS Glue en la Guía para desarrolladores de AWS Glue.

  • No se admiten valores de partición que contengan comillas y apóstrofes, por ejemplo, PARTITION (owner="Doe's").

  • Las estadísticas de columnas son compatibles con emr-5.31.0 y versiones posteriores.

  • No se admite el uso de la autorización de Hive. Como alternativa, considere la posibilidad de utilizar políticas basadas en recursos de AWS Glue. Para obtener más información, consulte Uso de políticas basadas en recursos para Amazon EMR Access to Glue AWS Data Catalog.

Tenga en cuenta lo siguiente cuando utilice AWS Glue Data Catalog como catálogo REST de Apache Iceberg con Spark:

  • Si usa el catálogo de sesiones de Spark con Iceberg, como se describe enDiferencias de configuración cuando se usa Iceberg SparkCatalog y SparkSessionCatalog, debe configurar el catálogo de datos de AWS Glue como el metaalmacén de Apache Hive, además de configurar el catálogo de datos de AWS Glue como el catálogo REST de Apache Iceberg.

  • El punto final IRC de AWS Glue Data Catalog solo admite el esquema de autenticación Amazon SigV4. OAuth no es compatible. Para OAuth los usuarios, utilice el Centro de identidad de IAM para configurar el acceso. Consulte Connecting Lake Formation con IAM Identity Center.

  • El catálogo REST de AWS Glue Iceberg no admite todas las operaciones en código abierto.