Apache Hive es un sistema de almacenamiento de datos (Data Warehouse) distribuido y de código abierto, construido sobre Apache Hadoop. Su principal objetivo es permitir que los usuarios analicen grandes volúmenes de datos (petabytes) usando un lenguaje similar a SQL, sin necesidad de escribir complejos trabajos de MapReduce o Spark. Creado originalmente por Facebook en 2009 y donado a la Apache Software Foundation en 2010.
Arquitectura de Hive
Los componentes más importantes de la arquitectura Hive incluyen:
Metastore: La ubicación central de almacenamiento de Hive donde, como formato RDBMS, residen todos los datos e información como definiciones de tablas, ubicación de esquemas y directorios y metadatos de particiones
Driver: recibe comandos HiveQL y los procesa utilizando los componentes Compiler (recopila información), Optimizer (determina el mejor método de ejecución) y Executor (implementa la tarea)
Línea de comandos + Interfaz de usuario: interfaz para usuarios externos
Thrift server: permite a los clientes externos comunicarse con Hive y permite a los protocolos JDBC y ODBC interactuar y comunicarse a través de la red
¿Para qué sirve realmente?
Hive permite hacer lo siguiente sobre datos almacenados en HDFS, Amazon S3, Azure Data Lake, Google Cloud Storage, etc.:
Consultas tipo SQL (llamado HiveQL o HQL).
ETL (Extract, Transform, Load).
Análisis de datos a gran escala.
Generación de reportes.
Machine Learning básico (usando datos preparados).
Cómo funciona (de forma sencilla)
Se escribe una consulta en HiveQL (muy parecida a SQL estándar).
Hive traduce esa consulta en un plan de ejecución (originalmente MapReduce, ahora principalmente Tez o Spark).
Ejecuta el trabajo de forma distribuida en el clúster.
Devuelve los resultados.
Ejemplo de consulta HiveQL
SELECT
pais,
COUNT(*) as total_usuarios,
AVG(edad) as edad_promedio
FROM usuarios
WHERE fecha_registro >= '2025-01-01'
GROUP BY pais
ORDER BY total_usuarios DESC
LIMIT 10;
¿Qué es HiveQL?
El lenguaje HiveQL se basa en SQL, pero no se corresponde con estándares como SQL-92. Por tanto, HiveQL. A pesar de todas las similitudes, ambos lenguajes son diferentes en aspectos esenciales. Por ejemplo, HiveQL no admite muchas funciones SQL para transacciones o subconsultas, y a su vez proporciona una mejor escalabilidad y rendimiento en el framework Hadoop con sus propias extensiones como Multitable Inserts. El compilador Apache Hive traduce las consultas HiveQL a MapReduce, Tez y Spark.