Un poco de Hive

Las aplicaciones MapReduce se escriben en Java, lo que requiere un buen programador Java capaz de pensar en términos MapReduce, con el suficiente tiempo para escribir y testar el código!!!

Sin duda ahí está el motivo por el que existe Hive o Pig :D.

Muchas organizaciones tienen sólo unos pocos desarrolladores que puedan escribir código MapReduce.

Hive es una abstracción de alto nivel sobre MapReduce que permite consultar los datos en el cluster Hadoop sin necesidad de codificar código MapReduce.

Hive fue desarrollado originalmente en Facebook, aunque ahora es un proyecto top level de Apache, ofrece un lenguaje muy similar a SQL (HiveSQL), que puede ser utilizado por personas que conocen SQL.

Una consulta tiene este aspecto:

Las Tablas Hive corren sobre HDFS y la forman 3 conceptos:

– Tablas: soportan columnas tipadas (int, float, string, boolean,…) y también arrays, mapas (datos JSON)

Particiones: permiten por ejemplo agrupar tablas por rangos temporales

Buckets: particiones Hash en rangos, muy usadas para muestreo)

Hive tiene un metastore que es una base de datos con definiciones de tabla y otros metadatos, por defecto se almacena en local en una BD Derby.

Las tablas Hive se almacenan en el directorio warehouse en HDFS (por defecto (/users/hive/warehouse). Las tablas se almacenan en subdirectorios en este directorio. Los datos se almacenan en ficheros planos.

Desde Hive pueden:

Crearse Tablas:

hive> SHOW TABLES;

hive> CREATE TABLE shakespeare

(freq INT, word STRING)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘t’

STORED AS TEXTFILE;

hive> DESCRIBE shakespeare;

Cargar datos en Hive:

hive>LOAD DATA INPATH "shakespeare_freq" INTO TABLE shakespeare;

Lanzar Queries:

hive>SELECT * FROM shakespeare

WHERE freq > 100 ORDER BY freq ASC

LIMIT 10;

Hacer JOINS:

hive>SELECT s.word, s.freq, k.freq FROM

shakespeare s JOIN kjv k ON

(s.word = k.word)

WHERE s.freq >= 5;

Almacenar datos de una Query en una tabla:

Hive> INSERT OVERWRITE TABLE newTable

SELECT s.word, s.freq, k.freq FROM

shakespeare s JOIN kjv k ON

(s.word = k.word)

WHERE s.freq >= 5;

Respuesta

  1. […] Ya hemos dedicado algunos posts a Apache Hive, si queréis saber que es os recomiendo comenzar por este post. […]

Deja un comentario