Cabecera personalizada

El blog de Mikel Niño
Industria 4.0, Big Data Analytics, emprendimiento digital y nuevos modelos de negocio

Apache Pig: consulta y procesamiento de Big Data semi-estructurado

Otra de las herramientas que rodean a Apache Hadoop para facilitar el procesamiento de Big Data es Apache Pig, una plataforma de código abierto inspirada en lo que Google concibió y divulgó en su día como Sawzall. En cierta manera podríamos categorizarla en el mismo grupo que Apache Hive, ya que Pig también nos permite definir una serie de transformaciones y consultas sobre Big Data sin tener que programar directamente sobre el modelo MapReduce, sino manejando un lenguaje (en este caso Pig Latin) que nos permite trabajar en un nivel más abstracto, aunque Hive y Pig difieren en la manera en que realizan ese modelado y transformación abstractos de los datos.

Cuando trabajamos con Apache Pig utilizamos como herramienta básica el lenguaje Pig Latin para modelar cómo deben interpretarse los datos a procesar y para definir las transformaciones que queremos hacer sobre ellos. En este caso, la manera en que se trabaja con Pig y Pig Latin se aleja de esa visión “relacional” y más similar a SQL que veíamos con Apache Hive y HiveQL. Una vez que hemos definido con qué tipos y formatos se deben entender los datos almacenados, podremos interpretar dichos datos como una relación (un conjunto de tuplas), donde cada tupla contendrá una serie de elementos de datos. La clave diferencial de Pig está en que, por ejemplo, las tuplas dentro de esa relación no tienen por qué tener siempre exactamente el mismo número de elementos de datos (algunas podrán tener datos adicionales o carecer de otros), o incluso una tupla podrá contener nuevos conjuntos de tuplas como uno de sus datos. El uso de este esquema “no 100% relacional” se adecua mejor a los casos en los que nos enfrentamos a datos semi-estructurados, un escenario que puede darse con frecuencia en el contexto de aplicaciones de Big Data.

Además de esta diferencia en cómo se define el esquema que queremos proyectar sobre los datos a procesar, otro aspecto clave es cómo y cuándo se convierten en trabajos MapReduce las transformaciones que definimos sobre los datos usando Pig Latin. La sintaxis no es tan parecida a SQL como en el caso de HiveQL, aunque también nos permitirá construir una cadena de filtrados, agrupaciones, ordenaciones, etc. para definir el formato final en el que queremos ver transformados nuestros datos. La clave de este proceso es que la generación y ejecución de las tareas MapReduce no se producirá hasta que ejecutemos una orden de generación efectiva de nuevos datos, bien sea para visualizarlos en pantalla o para guardarlos en un nuevo fichero. Será entonces cuando las órdenes de transformación que hemos ido definiendo anteriormente serán tenidas en cuenta para generar las tareas que, siguiendo el modelo MapReduce, producirán el procesamiento deseado en los datos.

2 comentarios:

  1. Muy interesante Mikel. Una sugerencia: ¿no sería un buen momento para "desdoblar" tu visita guiada de Junio sobre Big Data? La información extra aportada esta última etapa creo que ya da para una visita guiada específica para tecnologías Big Data y algunos seguidores te lo agradeceríamos.

    ResponderEliminar
    Respuestas
    1. Muchas gracias por la sugerencia, que entiendo del todo acertada :-)

      Sí, mi intención a corto plazo es desdoblar la visita guiada titulada "de la tecnología al negocio". En un principio he identificado una visita enfocada a lo más tecnológico y otra más centrada en los aspectos de negocio y creación de productos. Creo que eso se ajusta mejor a los diferentes intereses que he visto a la hora de buscar contenidos relacionados con Big Data. Es posible que en el futuro haga ese "clustering" de las entradas usando un número mayor de grupos :-) pero a corto sí que veo claramente esos dos.

      Eliminar