Apache Hadoop (V) – HIVE Consultas “tipo SQL” sobre Hadoop

hive_logo
¿Un elefante-abeja? WTF!

 

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).

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

b0e3cb28debd0cc08f2bb5482c638b51

Fuentes:

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s