hive_logo_mediumMuy buenas,

Siguiendo con Hadoop, veamos que es HiveQL y cómo utilizarlo.

Big Data y, como decíamos, “Hadoop On Azure”, contiene muchos componentes, en el post anterior, comentamos y trabajamos sobre uno de ellos, concretamente sobre “C# Streaming”.  En este caso, otro de estos es Hive QL:

¿Que nos dice Wikipedia?

Apache Hive es un data warehouse construida en la base de Hadoop a fin de proporcionar resumenes de datos, consultas y análisis. Aunque inicialmente desarrollado por Facebook, Apache Hive está utilizado y desarrollado por otras empresas como Netflix.  Hive también se incluye en “Amazon Elastic MapReduce” en Amazon Web Services.

Aunque está basado en SQL, HiveQL no sigue estrictamente el estandar SQL-92. HiveQL ofrece extensiones que no están en SQL, incluyendo:

  1. Inserciones multitable y “create table” como “select”
  2. Sólo ofrece soporte básico para índices.
  3. Carece de soporte para transacciones y “vistas materializadas”, y sólo soporta un conjuto limitado limitado queries.

Internamente, un compilador traduce las instrucciones HiveQL en un gráfico acíclico dirigido de jobs MapReduce, que son enviados a Hadoop para su ejecución.

Entendido que es HiveQL y partiendo del ejemplo del post anterior, nuestra intención, en este caso/ejemplo, es poder utilizar estas consultas SQL para explotar toda la información a nuestro antojo. Para ello, y como ya tenemos configurado Hadoop para trabajar con el Storage de Azure:

1) Accedemos a la consola de HiveQL a través del portal de Hadoop:

imageimage

2) Introducimos la siguiente “query” que nos va a permitir crear una tabla y cargar en ella el contenido de nuestro fichero.

CREATE EXTERNAL TABLE iislog (num INT,  url STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED by ‘32’
STORED AS TEXTFILE
LOCATION 'asv://fivetopuriresults/results.txt/part-00000';

image

donde: ‘32’ es el carácter ASCII correspondiente al espacio. Indicando esto que el fichero de texto se cargará en la tabla separando los campos por este carácter.

3) Comprobamos que nuestra tabla se ha creado correctamente; bien desde la consola de Hive o, bien usando la query “show tables;”:

image image

4) Comprobamos que los datos se han cargado correctamente usando la query “select * from iislog;

image

5) Con la tabla ya cargada, sólo nos queda comenzar a realizar las queries, por ejemplo:

SELECT url FROM iislog
WHERE num = '8';

Algunas otras instrucciones son:

  • drop iislog; para borrar
  • –, para comentarios 

Nota: Es muy importante que la ruta del fichero de Azure Storae (“asv://” ) sea correcta puesto que en caso contrario la creación de la tabla no provocará un error. Debemos te tener en cuenta también que tanto esta ruta como cualquier otra (HDFS://) es “key sensitive”.

Para más información sobre queries en HiveQL podemos ver este tutorial.

En el siguiente post, veremos como consumir estos datos de una forma mucho más amigable, Excel, Power Pivot y Power View, nos ayudarán en esta labor.

Saludos and happy HiveQL !!

Juanlu, ElGuerre