Cabecera personalizada

El blog de Mikel Niño
Emprendimiento digital, startups, Big Data Analytics y nuevos modelos de negocio

Apache Hive: una visión "más SQL" del procesamiento de Big Data

Ya hemos comentado anteriormente que son muchas y diversas herramientas las que han ido surgiendo en la última década para complementar a Apache Hadoop, facilitando y potenciando de esa manera el procesamiento de Big Data. En esta entrada vamos a tratar con algo más de detalle una de estas herramientas, Apache Hive, que acerca una visión relacional y el uso de lenguajes de procesamiento de datos tan extendidos como SQL al trabajo con grandes volúmenes de datos.

Apache Hive es una herramienta que, una vez instalada sobre Apache Hadoop, nos permite trabajar con datos que tenemos almacenados en un sistema HDFS o similar de una manera mucho más cercana a la manera con la que tradicionalmente se ha venido trabajando en el mundo de las bases de datos relacionales. Para ello proporciona un lenguaje de consulta y manipulación de datos llamado HiveQL, que tiene una sintaxis y utilización enormemente similares a las del conocido lenguaje SQL.

El objetivo de Apache Hive es poder trabajar con los datos aprovechando todo el potencial del paradigma MapReduce implementado en Hadoop, pero sin tener obligatoriamente que preocuparnos de programar directamente tareas siguiendo dicho esquema. En vez de ello, gracias a Hive podremos definir instrucciones en HiveQL (cuyo estilo, como decía, guardará mucha similitud con el de las creadas usando SQL) que, en primera instancia, nos permitirán explicitar un esquema relacional (“create table”) según el cual queremos interpretar los datos almacenados. Es decir, este primer paso nos permitirá determinar una o varias vistas con formato de tabla (una serie de columnas de datos con valores de diversos tipos) que serán utilizadas para interpretar determinados datos (por ejemplo los ficheros de una carpeta concreta) dentro de nuestro sistema de ficheros distribuidos.

Partiendo de esa definición, podremos crear consultas “select” en HiveQL (de nuevo, de manera casi idéntica a las que crearíamos en SQL, con el conocido esquema “select-from-where” y pudiendo añadir agrupaciones u ordenaciones) referidas a un determinado procesamiento de datos. Estas consultas serán convertidas internamente por Hive en trabajos MapReduce, siguiendo la definición del esquema relacional que hemos explicitado anteriormente para interpretar los datos (en cierta manera “proyectando” los datos según la estructura definida en ese esquema), y serán ejecutadas por Hadoop de la misma manera que si las hubiésemos programado directamente siguiendo el modelo MapReduce, pero en este caso sin tener que preocuparnos de trabajar directamente en términos de tareas Map y Reduce, sino centrándonos sólo en entender y procesar los datos desde un punto de vista mucho más “relacional”. Existe incluso la posibilidad de instalar un driver ODBC para Hive, de manera que podemos utilizar conexiones ODBC para consultar estas “tablas” definidas en Hive desde otras herramientas, y así manipular o visualizar el resultado de dichas consultas.

No hay comentarios:

Publicar un comentario