HIVE - Consultas "tipo SQL" sobre Hadoop

00:12

¿Un elefante-abeja? WTF!
Este post pertenece a la serie de BigData & Hadoop. A continuación tenéis el esquema que iré siguiendo de publicación de los Post:


Seguimos con los componentes de Hadoop. Hoy es uno de los más importantes y quizás más sencillos de instalar y configurar una vez tenemos nuestro clúster de hadoop bien montado.

Este post dará nociones básicas sobre HIVE pero no entraré en la instalación y configuración, puesto que es muy sencilla.

¿Qué es HIVE?

Hive es almacén de datos creado específicamente para Hadoop que nos facilita la tarea de sumarizar los datos pre-existentes en HDFS. La idea principal de Hive es la de funcionar como capa externa a Hadoop a modo de envoltorio, donde vamos a poder realizar consultas sobre el sistema de archivos que serán tratadas como MapReduces en modo nativo en HDFS.

Para poder realizar estas operaciones, los de Apache crearon un lenguaje de consultas a "base de datos" (recordemos que HDFS es un sistema de ficheros) muy similar a SQL, que denominaron HiveQL o HQL (dependiendo de en que libro lo leas lo verás de una manera u otra).

El corazón de esta idea se basa en el denominado MetaStore, que es un "lugar" donde se van a ir guardando toda la información relacionada con las operaciones en Hive, por lo tanto el día que queráis formatear Hive, deberéis borrar dicho directorio para tenerlo como el primer día.

Es una herramienta que utilizan en facebook y los chic@s de Hortonworks nos explican como se manejan con este componente.

Características especiales de Hive

Al ser una capa de alto nivel de un sistema de ficheros HDFS, hay algunas operaciones "tipo SQL" que son especiales en Hive. En concreto las operaciones de crear tablas que tiren de HDFS y la de carga de datos en Hive pueden ser ejemplos de ello:

  • Crear una tabla que "tire" de HDFS:
CREATE TABLE tablaDePrueba (campo1 string, campo2 int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\t'
STORED AS TEXTFILE;

  • Cargar datos en la tabla:
LOAD DATA INPATH '/datos/pruebas/test/tablaPruebas' OVERWRITE INTO TABLE tablaDePrueba;

  • Consulta a tabla:
SELECT campo1,campo2 FROM tablaDePrueba LIMIT 100 ORDER BY campo2 DESC;

También podemos hacer consultas a tablas que se encuentren en HBase (con el fin de no tener que realizar bulks loads a Hive de ficheros de texto plano), pero la penalización por la latencia es tan alta, que para que realmente nos sea rentable usar la combinación Hadoop + HBase + Hive necesitaremos un clúster enorme, de cientos de nodos (cosa que debe pasar en Facebook).

Avisar que con Hive no podremos realizar JOINs ni hacer CRUD. Es algo en lo que están trabajando y se espera para siguientes versiones, según nos comentaron en BigDataSpain.

Y por hoy es todo. ¿Ha sido fácil eh?!!!

Fuentes: 

You Might Also Like

1 comentarios

  1. Buen día Francisco,

    He leído la serie de BIG DATA & Hadoop y me parece muy bueno el trabajo que realizaste, yo estoy adentrando en este mundo del BIG DATA y me ha servido bastante, aún falta leer completas las sugerencias que das de cada herramienta pero quería agradecer el tiempo que dedicas para hacer llegar a otras personas interesadas tus conocimientos e investigaciones.

    Saludos!

    ReplyDelete

Sé respetuoso/a, en este blog caben todo tipo de opiniones con respeto y serenidad.

statistics :: ヽ(*・ω・)ノ

Contact Form :: (」゜ロ゜)」