🐝 Tutorial de Apache Hive
1. ¿Qué es Hive?
Apache Hive es un data warehouse sobre Hadoop que permite:
• Consultar datos en HDFS usando un lenguaje tipo SQL (HiveQL).
• Definir tablas que se corresponden con archivos en HDFS.
• Procesar datos a gran escala sin escribir MapReduce directamente.
• Integrarse con herramientas de análisis (ej. Superset, Power BI, Tableau).
👉 Hive no almacena datos en sí, solo define cómo interpretar los archivos en HDFS.
La información de las tablas se guarda en una metastore (por defecto en Derby o
MySQL/PostgreSQL).
2. Flujo básico de trabajo
1. Guardar datos en HDFS.
2. Crear una tabla en Hive que apunte a esos datos.
3. Consultar con HiveQL (similar a SQL).
4. Usar funciones para transformar y analizar.
3. Comandos básicos de Hive
🔹 Entrar en Hive
hive # abre la CLI interactiva
beeline -u jdbc:hive2://localhost:10000 # cliente JDBC (HiveServer2)
🔹 Manejo de bases de datos
CREATE DATABASE ventas;
SHOW DATABASES;
USE ventas;
DROP DATABASE ventas CASCADE;
🔹 Tablas
Existen dos tipos:
• Managed tables (gestionadas) → Hive controla los datos (si borras la tabla, borra también
los datos en HDFS).
• External tables → Hive solo lee, los datos permanecen en HDFS aunque borres la tabla.
Crear tabla gestionada
CREATE TABLE productos (
id INT,
nombre STRING,
precio FLOAT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
Crear tabla externa
CREATE EXTERNAL TABLE ventas (
producto_id INT,
cantidad INT,
fecha STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/bigdata/ventas/';
🔹 Cargar datos
LOAD DATA LOCAL INPATH '/home/hduser/productos.csv'
OVERWRITE INTO TABLE productos;
LOAD DATA INPATH '/bigdata/ventas/ventas.csv'
INTO TABLE ventas;
🔹 Consultas básicas
SELECT * FROM productos;
SELECT nombre, precio FROM productos WHERE precio > 20;
SELECT COUNT(*) FROM ventas;
SELECT producto_id, SUM(cantidad)
FROM ventas
GROUP BY producto_id;
🔹 Particiones y buckets
• Particiones → dividen los datos en carpetas por valor de una columna.
• Buckets → dividen datos dentro de una partición para paralelizar consultas.
Ejemplo con particiones:
CREATE TABLE ventas_part (
producto_id INT,
cantidad INT
)
PARTITIONED BY (fecha STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
4. Ejercicios prácticos 🎓
Ejercicio 1 – Crear DB y tablas
1. Crear la base de datos bigdata.
2. Dentro, crear una tabla alumnos con columnas: id, nombre, ciclo.
3. Mostrar todas las bases de datos y tablas creadas.
Ejercicio 2 – Subir datos
1. Guardar un CSV en HDFS (/bigdata/datos/alumnos.csv).
2. Crear una tabla externa en Hive que apunte a ese CSV.
3. Consultar todos los registros con SELECT *.
Ejercicio 3 – Consultas básicas
Con la tabla de ventas:
1. Listar los productos vendidos más de 10 veces.
2. Calcular el total de ventas por producto.
3. Obtener las fechas en las que se vendieron más de 100 unidades.
Ejercicio 4 – Particiones
1. Crear una tabla de logs con columnas: usuario, acción, fecha.
2. Particionarla por fecha (PARTITIONED BY (fecha STRING)).
3. Subir dos ficheros de log (ej. /logs/2025-09-01, /logs/2025-09-02) a HDFS.
4. Añadir particiones y consultar solo las de un día.
5. Consejos importantes
• Hive es batch, no para consultas en tiempo real.
• Para datos no estructurados (JSON, Avro, Parquet) → usar SerDes
(Serializers/Deserializers).
• Si quieres velocidad → usar ORC/Parquet + Tez o SparkSQL en lugar de MapReduce.