

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.

# Uso del catálogo de datos de AWS Glue como metaalmacén para Hive
<a name="emr-hive-metastore-glue"></a>

Con la versión 5.8.0 o posterior de Amazon EMR, puede configurar Hive para que utilice el catálogo de datos de AWS Glue como metaalmacén. Recomendamos esta configuración cuando se necesita un metaalmacén persistente o un metaalmacén compartido por diferentes clústeres, servicios, aplicaciones o cuentas de AWS .

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](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) 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](https://aws.amazon.com/glue/pricing).

**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](https://docs.aws.amazon.com/athena/latest/ug/glue-upgrade.html) en la Guía del *usuario de Amazon Athena*.

## Especificación de AWS Glue Data Catalog como metaalmacén
<a name="emr-hive-glue-configure"></a>

Puedes especificar el catálogo de datos de AWS Glue como metastore mediante la Consola de administración de AWS API AWS CLI, o Amazon EMR. Cuando utiliza la CLI o la API, utiliza la clasificación de configuración de Hive 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**.

------
#### [ Console ]

**Para especificar AWS Glue Data Catalog como el metaalmacén de Hive con la consola**

1. [Inicie sesión en y abra la Consola de administración de AWS consola de Amazon EMR en https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr)

1. En **EMR en EC2** situado en el panel de navegación izquierdo, elija **Clústeres** y, a continuación, elija **Crear clúster**.

1. **En **Paquete de aplicaciones**, elija **Core, Hadoop** o Custom. **HBase**** Si personaliza el clúster, asegúrese de seleccionar Hive o HCatalog como una de sus aplicaciones.

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

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

1. Para lanzar el clúster, elija **Crear clúster**.

------
#### [ CLI ]

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

Para obtener más información sobre cómo especificar una clasificación de configuración mediante la API AWS CLI y EMR, consulte. [Configuración de aplicaciones](emr-configure-apps.md)
+ Especifique el valor de `hive.metastore.client.factory.class` utilizando la clasificación de configuración `hive-site` tal y como se muestra en el siguiente ejemplo:

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

  En las versiones 5.28.0, 5.28.1, 5.29.0 o 6.x de EMR, si vas a crear un clúster con el catálogo de datos de AWS Glue como metaalmacén, establece el. `hive.metastore.schema.verification` `false` Esto impide que Hive HCatalog valide el esquema de metastore con MySQL. Sin esta configuración, el grupo de instancias principal se suspenderá tras la reconfiguración en Hive o. HCatalog 

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

  Si ya tiene un clúster en la versión de EMR 5.28.0, 5.28.1 o 5.29.0 de EMR, puede establecer el grupo de instancias principal `hive.metastore.schema.verification` como `false` con la siguiente información:

  ```
     
      Classification = hive-site
      Property       = hive.metastore.schema.verification
      Value          = false
  ```

  Para especificar un catálogo de datos en una AWS cuenta diferente, agrega 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": "hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory",
        "hive.metastore.schema.verification": "false",
        "hive.metastore.glue.catalogid": "acct-id"
      }
    }
  ]
  ```

------

## Permisos de IAM
<a name="emr-hive-glue-permissions"></a>

El perfil de instancia EC2 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
<a name="emr-hive-glue-permissions-actions"></a>

Si utiliza el perfil de instancia de EC2 predeterminado para Amazon EMR, no se requiere 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 especifica un perfil y permisos de instancia EC2 personalizados, debe configurar las acciones de AWS Glue adecuadas. Utilice la política administrada `AmazonElasticMapReduceforEC2Role` como punto de partida. Para más información, consulte [Rol de servicio para instancias de EC2 del clúster (perfil de instancia de EC2)](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-role-for-ec2.html) en la *Guía de administración de Amazon EMR.*

### Permisos para cifrar y descifrar AWS Glue Data Catalog
<a name="emr-hive-glue-permissions-encrypt"></a>

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, debe agregar la siguiente instrucción a la política de permisos adjunta al perfil de instancia de EC2. 

Para obtener más información sobre el cifrado del catálogo de datos de AWS Glue, consulte [Cifrar el catálogo de datos](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html) en la *Guía para desarrolladores de AWS Glue*.

### Permisos basados en recursos
<a name="emr-hive-glue-permissions-resource"></a>

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](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html) 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 del rol asociado al perfil de instancia EC2 que se especifica cuando se crea 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 instancias EC2 del clúster, *EMR\$1EC2\$1DefaultRole* como`Principal`, utilizando el formato que se muestra en el siguiente ejemplo:

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

*acct-id*Puede 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 AWS Glue Data Catalog
<a name="emr-hive-glue-considerations-hive"></a>

Ten en cuenta los siguientes elementos cuando utilices el catálogo de datos de AWS Glue como metaalmacén con Hive:
+ No se admite la adición de elementos auxiliares JARs mediante el shell de Hive. Como solución alternativa, utilice la clasificación de `hive-site` configuración para establecer la `hive.aux.jars.path` propiedad, que añade el elemento auxiliar JARs a la ruta de clases de Hive.
+ No se admiten las [transacciones de Hive](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions).
+ 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](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html) 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](https://cwiki.apache.org/confluence/display/Hive/StatsDev#StatsDev-ColumnStatistics) son compatibles con emr-5.31.0 y versiones posteriores.
+ No se admite el uso de la [autorización de Hive](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization). Como alternativa, considere la posibilidad de utilizar [políticas basadas en recursos de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/glue-resource-policies.html). Para obtener más información, consulte [Uso de políticas basadas en recursos para Amazon EMR Access to Glue AWS](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html) Data Catalog.
+ No se admiten las [restricciones de Hive](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Constraints).
+ No se admite la [optimización basada en los costos en Hive](https://cwiki.apache.org/confluence/display/Hive/Cost-based+optimization+in+Hive).
+ No se admite el uso de la configuración `hive.metastore.partition.inherit.table.properties`. 
+ No se admite el uso de las siguientes constantes de metaalmacén: `BUCKET_COUNT, BUCKET_FIELD_NAME, DDL_TIME, FIELD_TO_DIMENSION, FILE_INPUT_FORMAT, FILE_OUTPUT_FORMAT, HIVE_FILTER_FIELD_LAST_ACCESS, HIVE_FILTER_FIELD_OWNER, HIVE_FILTER_FIELD_PARAMS, IS_ARCHIVED, META_TABLE_COLUMNS, META_TABLE_COLUMN_TYPES, META_TABLE_DB, META_TABLE_LOCATION, META_TABLE_NAME, META_TABLE_PARTITION_COLUMNS, META_TABLE_SERDE, META_TABLE_STORAGE, ORIGINAL_LOCATION`.
+ Cuando utiliza una expresión de predicado, los valores explícitos deben estar en el lado derecho del operador de comparación o las consultas podrían devolver errores.
  + **Correcto**: `SELECT * FROM mytable WHERE time > 11`
  + **Incorrecto**: `SELECT * FROM mytable WHERE 11 > time`
+ Las versiones 5.32.0 y 6.3.0 y posteriores de Amazon EMR admiten el uso de funciones definidas por el usuario () en expresiones de predicados. UDFs Si utiliza versiones anteriores, es posible que sus consultas presenten errores debido a la forma en que Hive intenta optimizar la ejecución de las consultas.
+ No se admiten las [tablas temporales](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-TemporaryTables).
+ Recomendamos crear tablas con aplicaciones a través de Amazon EMR en lugar de crearlas directamente con Glue AWS . Al crear una tabla con AWS Glue, es posible que falten campos obligatorios y se produzcan excepciones en las consultas.
+ En EMR 5.20.0 o versiones posteriores, la reducción de particiones en paralelo se habilita automáticamente para Spark y Hive cuando se utiliza AWS Glue Data Catalog como metaalmacén. Este cambio reduce significativamente el tiempo de planificación de consultas al ejecutar varias solicitudes en paralelo para recuperar particiones. El número total de segmentos que se pueden ejecutar simultáneamente oscila entre 1 y 10. El valor predeterminado es 5, que es la configuración recomendada. Para cambiarlo, especifique la propiedad `aws.glue.partition.num.segments` en la clasificación de la configuración `hive-site`. Si se produce una limitación, puede desactivar la característica cambiando el valor a 1. Para más información, consulte [Estructura Segment de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-partitions.html#aws-glue-api-catalog-partitions-Segment).