APACHE HIVE: QUÉ ES Y CÓMO FUNCIONA
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.