Tipos de datos de Hive: cómo crear y eliminar bases de datos en Hive
⚡ Resumen inteligente
Los tipos de datos de Hive definen qué puede contener cada columna de una tabla, y los comandos CREATE DATABASE y DROP DATABASE configuran o eliminan el espacio de nombres en el que residen esas tablas dentro del metastore de Hive.

Los tipos de datos son elementos muy importantes en el lenguaje de consulta y el modelado de datos de Hive. Para definir los tipos de columnas de una tabla, debemos conocer los tipos de datos y su uso.
A continuación se ofrece una breve descripción general de algunos tipos de datos presentes en Hive:
- Tipos numéricos
- Tipos de cadenas
- Tipos de fecha/hora
- Tipos complejos
Tipos de datos en Hive
Cada columna de Hive se declara con uno de los siguientes tipos. Primero se incluyen las familias primitivas, seguidas de los tipos complejos que almacenan más de un valor en una sola columna.
Tipos de datos numéricos de Hive
Las columnas numéricas varían desde un byte hasta ocho bytes, por lo que elegir el tipo más pequeño que se ajuste a los valores reduce tanto el almacenamiento como el coste de escaneo.
| Tipo | Asignación de memoria |
|---|---|
| PEQUEÑO | Entero con signo de 1 bytes (-128 a 127) |
| SMALLINT | Entero con signo de 2 bytes (-32,768 a 32,767) |
| INT | Entero con signo de 4 bytes (-2,147,483,648 a 2,147,483,647) |
| EMPEZANDO | Entero con signo de 8 bytes (-9,223,372,036,854,775,808 a 9,223,372,036,854,775,807) |
| FLOAT | Número de punto flotante de precisión simple de 4 bytes |
| DOBLE | Número de punto flotante de doble precisión de 8 bytes |
| DECIMAL | Podemos definir la precisión y la escala en este tipo como DECIMAL(precisión, escala). Cuando se omiten, Hive usa DECIMAL(10,0). |
Tipos de datos de cadenas de colmena
Las columnas de caracteres vienen en tres formas, y la diferencia radica en si Hive impone o no una longitud declarada.
| Tipo | Longitud Mínima |
|---|---|
| CHAR | Longitud fija, hasta 255 caracteres. Los valores más cortos se rellenan con espacios. |
| VARCHAR | De 1 a 65,535 caracteres. Un valor mayor se trunca silenciosamente. |
| CADENA | Aquí podemos definir la longitud (sin límite). |
Tipos de datos de fecha/hora de Hive
Las columnas temporales se almacenan sin ningún desfase horario, lo cual conviene recordar antes de comparar valores escritos por diferentes clústeres.
| Tipo | Uso |
|---|---|
| Timestamp | Soporta tradicional Unix marca de tiempo con precisión de nanosegundos opcional |
| Fecha | Está en formato AAAA-MM-DD. El rango de valores admitidos para el tipo Fecha es de 0000-01-01 a 9999-12-31, dependiendo de la compatibilidad con la primitiva. Java Tipo de fecha |
Tipos de datos varios de Hive
Existen otros dos tipos de datos primitivos que quedan fuera de las familias numérica, de cadenas de caracteres y de fechas, pero que aparecen con regularidad en los esquemas reales.
| Tipo | Uso |
|---|---|
| Booleano | Almacena verdadero o falso |
| BINARIO | Almacena una matriz de bytes, lo que evita que el contenido sin procesar se almacene en una columna STRING. |
Tipos de datos complejos de Hive
Los tipos complejos anidan valores dentro de una misma columna, lo que elimina la unión adicional que requeriría un diseño relacional.
| Tipo | Uso |
|---|---|
| Matrices | ARRAY No se permiten valores negativos ni expresiones no constantes. |
| Mapas | MAP No se permiten valores negativos ni expresiones no constantes. |
| Estructuras | ESTRUCTURA |
| Union | TIPO DE UNIÓN |
Ejemplo de tipos de datos complejos de Hive
La tabla anterior muestra la forma de declaración. La instrucción siguiente coloca tres de los tipos complejos en una sola tabla para que las cláusulas delimitadoras y la sintaxis de acceso puedan visualizarse conjuntamente.
CREATE TABLE employees ( name STRING, skills ARRAY<STRING>, deductions MAP<STRING, FLOAT>, address STRUCT<street:STRING, city:STRING, pin:INT> ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY ',' MAP KEYS TERMINATED BY ':' LINES TERMINATED BY '\n' STORED AS TEXTFILE;
Aquí se necesitan tres delimitadores distintos: uno entre columnas, otro entre los elementos de un ARRAY o STRUCT, y un tercero entre la clave de un MAP y su valor. Una vez que existe la tabla, cada columna compleja se lee con su propio método de acceso.
SELECT name, skills[0], deductions['tax'], address.city FROM employees;
La tabla que aparece a continuación resume a qué tipo pertenece cada accesor.
| Tipo | Cómo se lee un valor |
|---|---|
| FORMACIÓN | Índice basado en cero, como skills[0] |
| MAPA | Búsqueda de claves entre corchetes, como por ejemplo deducciones['impuestos'] |
| ESTRUCTURA | Notación de puntos en el nombre del campo, como dirección.ciudad |
| TIPO DE UNIÓN | Se usa poco porque el soporte para consultas sigue siendo incompleto. |
Los tipos complejos pueden estar anidados, por lo que ARRAY > es una declaración de columna válida. Una vez que se establece el diseño de las columnas, las tablas se construyen con las instrucciones cubiertas en Tabla de creación, modificación y eliminación de Hive.
Cómo crear y eliminar bases de datos en Hive
En Hive, una base de datos es simplemente un espacio de nombres que agrupa tablas, por lo que es el primer objeto que se crea antes de comenzar cualquier operación con tablas. A continuación, se describen los pasos para crear y eliminar bases de datos en Hive.
Paso 1) Crear base de datos en Hive
Para crear una base de datos en la consola de Hive, debemos usar el comando como se muestra en la sintaxis a continuación:
Sintaxis:
Create database <DatabaseName>
Ejemplo: Crear base de datos “guru99”
La captura de pantalla que aparece a continuación muestra la instrucción CREATE seguida de un comando SHOW que lista todas las bases de datos del clúster.
En la captura de pantalla anterior, estamos haciendo dos cosas:
- Creando la base de datos “guru99” en Hive
- Visualización de bases de datos existentes mediante el comando “show”.
En la misma pantalla, al ejecutar el comando show se muestra al final la base de datos "guru99", lo que significa que la base de datos "guru99" se ha creado correctamente.
Paso 2) Eliminar la base de datos en Hive
Para la caídaping Para acceder a una base de datos en la consola de Hive, debemos usar el comando "drop" como se muestra en la sintaxis a continuación:
Sintaxis:
Drop database <DatabaseName>
Ejemplo: Eliminar la base de datos guru99
En la siguiente captura de pantalla, la instrucción DROP se ejecuta primero, y el comando Show que le sigue ya no muestra la base de datos.
En la captura de pantalla anterior, estamos haciendo dos cosas:
- Somos dropping base de datos 'guru99' de Hive
- Comprobando lo mismo con el comando “show”.
En la misma pantalla, tras comprobar las bases de datos con el comando show, la base de datos “guru99” no aparece en Hive. Por lo tanto, podemos confirmar que la base de datos “guru99” se ha eliminado.
Comandos de la base de datos Hive: USE, DESCRIBE, SHOW y ALTER DATABASE
Las dos declaraciones anteriores utilizan su forma más breve. La sintaxis documentada incluye cláusulas opcionales que determinan dónde se guardan los archivos y qué sucede cuando el nombre ya está en uso.
CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)];
DROP DATABASE [IF EXISTS] database_name [RESTRICT|CASCADE];
Las palabras clave DATABASE y SCHEMA son intercambiables, por lo que CREATE SCHEMA y CREATE DATABASE realizan exactamente la misma función. Los comandos restantes completan el trabajo diario con un espacio de nombres.
| Comando | ¿Qué hace? |
|---|---|
| MOSTRAR BASES DE DATOS; | Enumera todas las bases de datos registradas en el metastore. |
| USE nombre_de_la_base_de_datos; | Establece la base de datos actual para que los nombres de las tablas no necesiten prefijo. |
| DESCRIBIR LA BASE DE DATOS nombre_de_la_base_de_datos; | Informa el comentario, la ubicación HDFS y el propietario. |
| DESCRIBE DATABASE EXTENDED database_name; | Agrega los pares clave-valor de DBPROPERTIES a esa salida. |
| ALTER DATABASE nombre_de_la_base_de_datos ESTABLECER PROPIEDADES_DE_LA_BASE_DE_DATOS (…); | Agrega o reemplaza propiedades de metadatos |
| ALTER DATABASE nombre_de_base_de_datos ESTABLECER PROPIETARIO USUARIO nombre_de_usuario; | Transfiere la propiedad a otro usuario o rol. |
| ALTER DATABASE nombre_base_de_datos ESTABLECER UBICACIÓN ruta_hdfs; | Cambia la ruta utilizada por las tablas creadas a partir de ese momento. |
Hay dos valores predeterminados que conviene memorizar. Sin una cláusula LOCATION, los archivos se ubican en el directorio del almacén, normalmente /user/hive/warehouse/database_name.db, y sin IF EXISTS, una eliminación contra un nombre inexistente genera un error en lugar de pasar silenciosamente. Ambas configuraciones se almacenan en el Metastore de Hive.
Conversión de tipos de datos de Hive y errores comunes
Los tipos no siempre se utilizan exactamente como se declaran. Hive amplía automáticamente un valor cuando no se puede perder información y deja todo lo demás a una conversión explícita.
- La ampliación implícita sigue la cadena TINYINT a SMALLINT a INT a BIGINT a FLOAT a DOUBLE, y una STRING que contiene dígitos se convierte en DOUBLE.
- La reducción de tamaño nunca se produce por sí sola, por lo que un valor DOUBLE asignado a una columna INT necesita una conversión escrita.
- CAST realiza esa conversión escrita y devuelve NULL en lugar de un error cuando el valor no se puede convertir.
SELECT CAST(salary AS DECIMAL(10,2)) FROM employees;
Los errores que se describen a continuación explican la mayoría de las sorpresas con las que se encuentran los principiantes en su primer esquema.
| Síntoma | Causa y solución |
|---|---|
| La eliminación falla mientras la base de datos aún contiene tablas. | RESTRICT es el valor predeterminado. Agregue CASCADE para eliminar las tablas con él. |
| Una cuerda larga llega acortada | VARCHAR trunca silenciosamente su longitud declarada. Use STRING cuando no se desee ningún límite. |
| Una columna se lee como NULL después de una conversión. | CAST no pudo analizar el valor. Compruebe los datos de origen antes de ampliar el tipo. |
| El valor de las monedas pierde su paise o centavos. | DECIMAL sin argumentos significa DECIMAL(10,0). Indique la escala explícitamente. |
| Dos fechas de aspecto idéntico nunca coinciden. | Una fecha de tipo STRING y una columna de tipo DATE son de tipos diferentes. Convierta un lado antes de comparar. |
Una vez que los tipos se comportan correctamente, el siguiente paso es cargar y consultar los datos en sí, lo cual se cubre en Consultas de Hive con Ordenar por, Agrupar por y Cluster By.


