Todos los productos
Search
Centro de documentos

E-MapReduce:Conector de Hive

Última actualización: Sep 17, 2026

El conector de Hive le permite consultar y analizar los datos almacenados en un almacén de datos de Hive.

Contexto

Un almacén de datos de Hive consta de tres componentes:

  • Archivos de datos en diversos formatos, que por lo general se almacenan en Hadoop Distributed File System (HDFS) o en un sistema de object storage como Alibaba Cloud OSS.

  • Metadatos que asignan los archivos de datos a esquemas y tablas. Estos se almacenan en una base de datos como MySQL y se accede a ellos mediante Hive Metastore Service (HMS).

  • Un lenguaje de consulta llamado HiveQL, que se ejecuta sobre un framework de computación distribuida como MapReduce o Tez.

Este tema describe el conector de Hive y abarca lo siguiente:

Requisitos previos

Cree un clúster DataLake o un clúster Hadoop y seleccione el servicio Presto. Para obtener instrucciones, consulte Create cluster.

Limitaciones

  • El conector de Hive requiere que Hive Metastore Service esté configurado.

  • El conector de Hive es compatible con varios sistemas de almacenamiento distribuido, entre ellos HDFS, Alibaba Cloud OSS y otros sistemas compatibles con OSS. El nodo coordinador y todos los nodos worker deben tener acceso de red tanto al Hive Metastore como al sistema de almacenamiento subyacente. De forma predeterminada, Hive Metastore se comunica mediante el protocolo Thrift en el puerto 9083.

Modificar la configuración del conector de Hive

Para modificar la configuración del conector de Hive, consulte Configure a connector.

Configuración predeterminada del conector

En la consola de EMR, vaya a la

Configure

del servicio Presto. En la sección

Service Configuration

, haga clic en la pestaña

hive.properties

. Consulte los siguientes parámetros y modifíquelos según sea necesario.

Parámetro Descripción
hive.recursive-directories Habilita la lectura de datos desde los subdirectorios de las ubicaciones de tablas o particiones. Es similar a la propiedad hive.mapred.supports.subdirectories de Hive.
hive.metastore.uri URI para conectarse al Hive Metastore mediante el protocolo Thrift.

El valor predeterminado tiene el formato thrift://<master-node-name>.cluster-24****:9083.

hive.config.resources Lista de archivos de configuración de HDFS separados por comas. Estos archivos deben existir en todos los hosts de Presto.
Importante Configure este parámetro solo cuando se requiera acceso a HDFS.
hive.delta-table-enabled Especifica si Presto puede leer tablas de Delta Lake. Los valores válidos son:
  • true (predeterminado): Presto puede leer tablas de Delta Lake.
  • false: Presto no puede leer tablas de Delta Lake.
hive.delta-compatible-mode-enabled Especifica si se habilita el modo de compatibilidad para las tablas de Delta Lake. Los valores válidos son:
  • true (predeterminado): se habilita el modo de compatibilidad para las tablas de Delta Lake.
  • false: no se habilita el modo de compatibilidad para las tablas de Delta Lake.
hive.hdfs.impersonation.enabled Especifica si se habilita la suplantación de usuarios. Los valores válidos son:
  • true: se habilita la suplantación de usuarios.
  • false (predeterminado): no se habilita la suplantación de usuarios.

Configuración para varios clústeres de Hive

Si cuenta con varios clústeres de Hive, agregue múltiples archivos de catálogo al directorio etc/catalog. Asegúrese de que cada archivo tenga la extensión .properties.

Por ejemplo, si el archivo de propiedades se llama sales.properties, Presto usa la configuración del conector contenida en ese archivo para crear un catálogo denominado sales.

Configuración de HDFS

Presto configura automáticamente el cliente de HDFS y, por lo general, no requiere archivos de configuración. Sin embargo, en algunos casos, como cuando se habilita HDFS federado o la alta disponibilidad de NameNode, debe especificar opciones adicionales del cliente de HDFS para acceder a su clúster. Para ello, agregue la propiedad

hive.config.resources

con el fin de hacer referencia a los archivos de configuración de HDFS necesarios.

Importante
  • Incluya únicamente el conjunto mínimo de propiedades obligatorias en los archivos para evitar incompatibilidades.

  • Los archivos de configuración deben existir en todos los hosts de Presto. Si hace referencia a archivos de configuración de Hadoop existentes, asegúrese de copiarlos a cualquier nodo de Presto que no ejecute Hadoop.

Nombre de usuario y permisos de HDFS

Antes de ejecutar cualquier instrucción CREATE TABLE o CREATE TABLE AS para tablas de Hive en Presto, asegúrese de que el usuario con el que Presto accede a HDFS tenga permisos sobre el directorio del almacén de Hive. Este directorio se define mediante la variable de configuración hive.metastore.warehouse.dir en el archivo hive-site.xml. El valor predeterminado es /user/hive/warehouse.

Tipos de archivo compatibles

El conector de Hive admite los siguientes tipos de archivo.

Tipo de archivo

Notas

ORC

Ninguna

Parquet

Ninguna

Avro

Ninguna

RCText

RCFile que utiliza ColumnarSerDe.

RCBinary

RCFile que utiliza LazyBinaryColumnarSerDe.

SequenceFile

Ninguna

JSON

Utiliza org.apache.hive.hcatalog.data.JsonSerDe.

CSV

Utiliza org.apache.hadoop.hive.serde2.OpenCSVSerde.

TextFile

Ninguna

Tipos de tabla compatibles

El conector de Hive admite los siguientes tipos de tabla.

Tipo

Descripción

Tabla ACID

Cuando se conecta a un Hive Metastore versión 3.x, el conector de Hive puede leer y escribir en tablas de solo inserción y tablas ACID. Además, admite particiones y buckets de manera completa.

También es compatible con las operaciones DELETE y UPDATE a nivel de fila en tablas ACID. No obstante, no admite operaciones UPDATE en columnas de clave de partición ni en columnas de bucket. Tampoco permite consultar tablas ACID creadas mediante Hive Streaming Ingest. Para obtener más información, consulte Streaming Data Ingest.

Vista materializada

El conector de Hive puede leer datos de vistas materializadas de Hive. En Presto, estas vistas se presentan como tablas normales de solo lectura.

Vistas de Hive

Una vista de Hive se define en HiveQL y se almacena en Hive Metastore Service.

El conector de Hive admite las vistas de Hive en los tres modos siguientes.

Modo Descripción
Disabled La lógica de negocio y los datos codificados en la vista no son visibles en Presto.

De forma predeterminada, Presto ignora las vistas de Hive.

Legacy Implementación sencilla que permite a Presto leer datos de las vistas de Hive.

Para habilitar este modo, establezca hive.translate-hive-views=true y hive.legacy-hive-view-translation=true.

Si desea habilitar temporalmente el acceso heredado para un catálogo específico, defina la propiedad de sesión de catálogo legacy_hive_view_translation como true.

Dado que HiveQL es muy similar a SQL, el modo heredado interpreta la consulta HiveQL de la vista como SQL estándar, sin traducción alguna.

Este enfoque funciona bien con vistas simples de Hive, pero puede generar problemas en consultas complejas. Por ejemplo, si una función de HiveQL tiene la misma firma que una función de SQL pero un comportamiento distinto, los resultados pueden variar. En casos más extremos, la consulta podría fallar durante el análisis sintáctico o la ejecución.

Experimental Este modo analiza, procesa y reescribe las vistas de Hive, incluidas sus expresiones e instrucciones.

Para habilitarlo, establezca hive.translate-hive-views=true.

Aún no es compatible con las siguientes funciones:
  • Instrucciones de HiveQL como current_date, current_timestamp y similares.
  • Llamadas a funciones de Hive como translate(), funciones de ventana y otras equivalentes.
  • Expresiones de tabla comunes y expresiones case simples.
  • Configuración de la precisión de marcas de tiempo.
  • Asignación correcta de todos los tipos de datos de Hive a los tipos de Presto.
  • Manejo de UDF personalizadas.

Propiedades de configuración

Propiedades de configuración de Hive

El conector de Hive admite la aceleración con JindoTable. Los clústeres de EMR incluyen dos conectores de Hive integrados: hive.properties y hive-acc.properties. El archivo hive-acc.properties incorpora JindoTable Native Engine para optimizar y acelerar los archivos en formato ORC o Parquet. Consulte la documentación correspondiente a su versión de SmartData. Para obtener más detalles, consulte Enable native query acceleration.

A continuación se muestran las propiedades de configuración del conector de Hive.

Parámetro Descripción
hive.config.resources Lista de archivos de configuración de HDFS separados por comas. Estos archivos deben existir en todos los hosts de Presto.
Nota Configure esta propiedad solo cuando se requiera acceso a HDFS.
hive.recursive-directories Permite leer datos desde los subdirectorios de las ubicaciones de tablas o particiones, de forma similar a la propiedad hive.mapred.supports.subdirectories de Hive.
hive.ignore-absent-partitions Ignora una partición si falta su ubicación en el sistema de archivos, en lugar de hacer que la consulta falle. Esto puede provocar que se omitan datos.

El valor predeterminado es false.

hive.storage-format Especifica el formato de archivo predeterminado para las tablas nuevas.

El valor predeterminado es ORC.

hive.compression-codec Especifica el códec de compresión que se utilizará al escribir archivos. Valores válidos: NONE, SNAPPY, LZ4, ZSTD o GZIP.

El valor predeterminado es GZIP.

hive.force-local-scheduling Obliga a programar los splits en el mismo nodo que el DataNode de Hadoop. Esta configuración mejora la eficiencia en instalaciones donde Presto se ubica junto a cada DataNode.

El valor predeterminado es false.

hive.respect-table-format Controla si las particiones nuevas utilizan el formato de tabla existente o el formato de Presto. Valores válidos:
  • true (predeterminado): utiliza el formato de tabla existente.
  • false: utiliza el formato de Presto.
hive.immutable-partitions Controla si se pueden insertar datos nuevos en particiones existentes.

Si se establece en true, hive.insert-existing-partitions-behavior no puede definirse como APPEND.

El valor predeterminado es false.

hive.insert-existing-partitions-behavior Especifica el comportamiento al insertar datos en una partición existente. Valores válidos:
  • APPEND (predeterminado): agrega los datos a la partición existente.
  • OVERWRITE: sobrescribe la partición existente.
  • ERROR: no permite modificaciones en las particiones existentes.
hive.create-empty-bucket-files Controla si se crean archivos vacíos para los buckets vacíos. Valores válidos:
  • true: crea archivos vacíos.
  • false (predeterminado): no crea archivos vacíos.
hive.max-partitions-per-writers Número máximo de particiones por escritor.

El valor predeterminado es 100.

hive.max-partitions-per-scan Número máximo de particiones para un único escaneo de tabla.

El valor predeterminado es 100,000.

hive.hdfs.authentication.type Especifica el tipo de autenticación de HDFS. Valores válidos:
  • NONE (predeterminado): modo estándar, sin autenticación Kerberos.
  • KERBEROS: modo seguro, con autenticación Kerberos.
hive.hdfs.impersonation.enabled Habilita la suplantación de usuarios de HDFS. Valores válidos:
  • true: habilita la suplantación de usuarios de HDFS.
  • false (predeterminado): deshabilita la suplantación de usuarios de HDFS.
hive.hdfs.trino.principal Principal de Kerberos que utiliza Presto para conectarse a HDFS.
hive.hdfs.trino.keytab Ubicación del archivo keytab del cliente de HDFS.
hive.dfs.replication Factor de replicación de HDFS.
hive.security El valor predeterminado es legacy. Para obtener más información, consulte Configuración de seguridad del conector de Hive.
security.config-file Especifica la ruta del archivo de configuración que se utiliza cuando se establece hive.security=file.
hive.non-managed-table-writes-enabled Habilita las escrituras en tablas de Hive no administradas (externas).

El valor predeterminado es false.

hive.non-managed-table-creates-enabled Habilita la creación de tablas de Hive no administradas (externas).

El valor predeterminado es true.

hive.collect-column-statistics-on-write Habilita la recopilación automática de estadísticas a nivel de columna durante las escrituras. Para obtener más información, consulte Table statistics.

El valor predeterminado es true.

hive.file-status-cache-tables Lista de tablas para las cuales se almacenan en caché los estados de los archivos.

Por ejemplo, fruit.apple,fruit.orange almacena en caché únicamente las tablas apple y orange del esquema fruit. fruit.,vegetable. almacena en caché todas las tablas de los esquemas fruit y vegetable. * almacena en caché todas las tablas de todos los esquemas.

hive.file-status-cache-size Número total máximo de entradas de estado de archivo almacenadas en caché.

El valor predeterminado es 1,000,000.

hive.file-status-cache-expire-time Tiempo durante el cual los estados de archivo almacenados en caché siguen siendo válidos.

El valor predeterminado es 1m.

hive.rcfile.time-zone Ajusta los valores de marca de tiempo codificados en binario a la zona horaria especificada.

El valor predeterminado es la zona horaria de la JVM.

Nota Para Hive 3.1 y versiones posteriores, este valor debe establecerse en UTC.
hive.timestamp-precision Especifica la precisión de las columnas de marca de tiempo en Hive. Valores válidos:
  • MILLISECONDS
  • MICROSECONDS
  • NANOSECONDS

El valor predeterminado es MILLISECONDS.

Nota Los valores con una precisión mayor a la configurada se redondean.
hive.temporary-staging-directory-enabled Controla si se utiliza el directorio de preparación temporal definido en hive.temporary-staging-directory-path para las operaciones de escritura. Este directorio no se emplea al escribir en OSS, en HDFS cifrado ni en tablas no ordenadas ubicadas en destinos externos. Al escribir en tablas ordenadas, la ruta sirve para preparar archivos temporales durante la operación de ordenamiento. Si se deshabilita, se usará el almacenamiento de destino para dicha preparación, lo cual puede resultar ineficiente en sistemas de object storage.

El valor predeterminado es true.

hive.temporary-staging-directory-path Especifica la ubicación del directorio de preparación temporal para las operaciones de escritura.
El valor predeterminado es /tmp/presto-${USER}.
Nota El marcador de posición ${USER} permite asignar una ubicación distinta para cada usuario.
hive.translate-hive-views Habilita la traducción de las vistas de Hive.

El valor predeterminado es false.

hive.legacy-hive-view-translation Utiliza el algoritmo heredado para traducir las vistas de Hive. La propiedad de sesión de catálogo legacy_hive_view_translation permite aplicarlo a catálogos específicos.

El valor predeterminado es false.

hive.parallel-partitioned-bucketed-writes Incrementa el paralelismo de escritura en tablas particionadas y con buckets.

El valor predeterminado es true.

Nota Si se deshabilita esta propiedad, la cantidad de hilos de escritura se limita al número de buckets.

Propiedades de configuración del formato ORC

Las siguientes propiedades controlan cómo el conector de Hive lee y escribe archivos ORC.

Parámetro

Descripción

hive.orc.time-zone

Establece la zona horaria predeterminada para los archivos ORC heredados que no declaran una zona horaria.

El valor predeterminado es la zona horaria de la JVM.

hive.orc.use-columns-names

Controla si se accede a las columnas ORC por nombre.

De forma predeterminada, se accede a las columnas de los archivos ORC según su posición ordinal en la definición de la tabla de Hive. Este comportamiento también se puede controlar mediante la propiedad de orc_use_column_names catalog session.

El valor predeterminado es false.

Propiedades de configuración del formato Parquet

Las siguientes propiedades controlan cómo el conector de Hive lee y escribe archivos Parquet.

Parámetro Descripción
hive.parquet.time-zone Ajusta los valores de marca de tiempo a la zona horaria especificada.

El valor predeterminado es la zona horaria de la JVM.

Nota Para Hive 3.1 y versiones posteriores, este valor debe establecerse en UTC.
hive.parquet.use-columns-names Controla cómo se accede a las columnas Parquet. Valores válidos:
  • true (predeterminado): accede a las columnas Parquet por nombre. El orden de las columnas no necesita coincidir con el del archivo.
  • false: accede a las columnas Parquet según su posición ordinal en la definición de la tabla de Hive.
Este comportamiento también se puede controlar mediante la propiedad de parquet_use_column_names catalog session.

Propiedades de configuración del metastore

Las siguientes propiedades configuran el metastore de Hive. Para conocer las propiedades que configuran adicionalmente Thrift, consulte

Thrift metastore configuration properties

.

Parámetro

Descripción

hive.metastore

Especifica el tipo de metastore de Hive que se utilizará. Presto admite el metastore Thrift predeterminado de Hive (thrift) y sus derivados.

El valor predeterminado es thrift.

hive.metastore-cache-ttl

Define durante cuánto tiempo se consideran válidos los datos del metastore almacenados en la caché.

El valor predeterminado es 0s.

hive.metastore-cache-maximum-size

Número máximo de objetos de datos del metastore que se almacenan en caché.

El valor predeterminado es 10000.

hive.metastore-refresh-interval

Especifica la frecuencia con la que se actualizan de forma asíncrona los datos del metastore almacenados en caché después de acceder a ellos. Si los datos están obsoletos pero aún no han caducado, los accesos posteriores mostrarán la información actualizada.

hive.metastore-refresh-max-threads

Número máximo de hilos utilizados para actualizar la caché del metastore.

El valor predeterminado es 10.

hive.metastore-timeout

Tiempo de espera para las solicitudes al metastore de Hive.

El valor predeterminado es 10s.

Propiedades de configuración del metastore Thrift

A continuación se describen las propiedades de configuración del metastore Thrift para el conector de Hive.

Parámetro Descripción
hive.metastore.uri URI para conectarse al metastore de Hive mediante el protocolo Thrift.

Si proporciona varias URI, se utilizará la primera de forma predeterminada y las demás funcionarán como metastores de respaldo. Esta propiedad es obligatoria. Ejemplo: thrift://192.0..:9083 o thrift://192.0..:9083,thrift://192.0..:9083.

hive.metastore.username Nombre de usuario con el que Presto accede al metastore de Hive.
hive.metastore.authentication.type Especifica el tipo de autenticación del metastore de Hive. Valores válidos:
  • NONE (predeterminado): modo estándar, sin autenticación Kerberos.
  • KERBEROS: modo seguro, con autenticación Kerberos.
hive.metastore.thrift.impersonation.enabled Habilita la suplantación de usuarios en el metastore de Hive.
hive.metastore.thrift.delegation-token.cache-ttl Tiempo de vida de la caché de tokens de delegación del metastore.

El valor predeterminado es 1h.

hive.metastore.thrift.delegation-token.cache-maximum-size Tamaño máximo de la caché de tokens de delegación.

El valor predeterminado es 1000.

hive.metastore.thrift.client.ssl.enabled Habilita o deshabilita SSL al conectarse al metastore. Valores válidos:
  • true: utiliza SSL para conectarse al metastore.
  • false (predeterminado): no utiliza SSL para conectarse al metastore.
hive.metastore.thrift.client.ssl.key Ruta de la clave privada y del certificado de cliente (keystore).
hive.metastore.thrift.client.ssl.key-password Contraseña de la clave privada.
hive.metastore.thrift.client.ssl.trust-certificate Ruta de la cadena de certificados del servidor (truststore).
Nota Esta propiedad es obligatoria cuando SSL está habilitado.
hive.metastore.thrift.client.ssl.trust-certificate-password Contraseña de la cadena de certificados del servidor.
hive.metastore.service.principal Principal de Kerberos del servicio de metastore de Hive.
hive.metastore.client.principal Principal de Kerberos que utiliza Presto para conectarse al servicio de metastore de Hive.
hive.metastore.client.keytab Ubicación del archivo keytab del cliente del metastore de Hive.

Propiedades de ajuste de rendimiento

A continuación se describen las propiedades de ajuste de rendimiento del conector de Hive.

Importante

Modificar los valores predeterminados de estas propiedades puede provocar inestabilidad y degradación del rendimiento. Proceda con precaución.

Parámetro

Descripción

hive.max-outstanding-splits

Número objetivo de splits almacenados en búfer por cada escaneo de tabla en una consulta, antes de que el planificador pause la detección.

El valor predeterminado es 1000.

hive.max-splits-per-second

Número máximo de splits generados por segundo en cada escaneo de tabla. Esta configuración reduce la carga sobre el sistema de almacenamiento. De forma predeterminada no existe límite, por lo que Presto maximiza el paralelismo en el acceso a los datos.

hive.max-initial-splits

Para cada escaneo de tabla, el coordinador asigna una cantidad inicial de splits hasta alcanzar este límite. Los splits iniciales tienen un tamaño máximo definido por max-initial-split-size. Los splits posteriores respetan el tamaño indicado en max-split-size.

El valor predeterminado es 200.

hive.max-initial-split-size

Tamaño de cada split inicial, utilizado hasta que la cantidad de splits alcanza el valor de max-initial-splits. Los splits más pequeños incrementan el paralelismo y pueden acelerar las consultas cortas.

El valor predeterminado es 32MB.

hive.max-split-size

Tamaño máximo de un split individual asignado a un worker. Los splits más pequeños generan mayor paralelismo, lo cual reduce la latencia, aunque también aumenta la sobrecarga y la carga del sistema.

El valor predeterminado es 64MB.

Estadísticas de tablas

El conector de Hive permite recopilar y gestionar estadísticas de tablas para mejorar el rendimiento de las consultas.

De forma predeterminada, al escribir datos, el conector de Hive recopila estadísticas básicas de la tabla (como la cantidad de archivos, el número de filas y el tamaño de los datos), además de las estadísticas a nivel de columna que se muestran en la siguiente tabla.

Tipo de columna

Estadísticas recopiladas

TINYINT

Cantidad de valores nulos, cantidad de valores distintos, valores mínimos y máximos

SMALLINT

Cantidad de valores nulos, cantidad de valores distintos, valores mínimos y máximos

INTEGER

Cantidad de valores nulos, cantidad de valores distintos, valores mínimos y máximos

BIGINT

Cantidad de valores nulos, cantidad de valores distintos, valores mínimos y máximos

DOUBLE

Cantidad de valores nulos, cantidad de valores distintos, valores mínimos y máximos

REAL

Cantidad de valores nulos, cantidad de valores distintos, valores mínimos y máximos

DECIMAL

Cantidad de valores nulos, cantidad de valores distintos, valores mínimos y máximos

DATE

Cantidad de valores nulos, cantidad de valores distintos, valores mínimos y máximos

TIMESTAMP

Cantidad de valores nulos, cantidad de valores distintos, valores mínimos y máximos

VARCHAR

Cantidad de valores nulos, cantidad de valores distintos

CHAR

Cantidad de valores nulos, cantidad de valores distintos

VARBINARY

Cantidad de valores nulos

BOOLEAN

Cantidad de valores nulos, cantidad de valores verdaderos y falsos