Pig (herramienta de programación)

De Wikipedia, la enciclopedia libre

Pig[1]​ es una plataforma de alto nivel para crear programas MapReduce utilizados en Hadoop. El lenguaje de esta plataforma es llamado Pig Latin.[1]​ Pig Latin abstrae la programación desde el lenguaje Java MapReduce en una notación que hace de MapReduce programación de alto nivel, similar a la de SQL para sistemas RDBMS. Pig Latin puede ser ampliado utilizando UDF (Funciones Definidas por el Usuario) que el usuario puede escribir en Java, Python, Javascript, Ruby o Groovy[2]​ y luego llamar directamente desde el lenguaje.

Pig fue desarrollado originalmente[3]​ por Yahoo Research en torno a 2006 por los investigadores para tener una forma ad hoc de crear y ejecutar un trabajo map-reduce en conjuntos de datos muy grandes. En 2007,[4]​ fue trasladado a Apache Software Foundation.[5]

Ejemplo[editar]

A continuación se muestra un ejemplo de un programa de "Word Count" en Pig Latin:

 lineas_de_entrada = LOAD '/tmp/mi-copia-de-todas-las-paginas-en-internet' AS (linea:chararray);
 
 -- Extrae las palabras de cada línea y las coloca en un tipo de dato "bolsa" de Pig,
 -- a continuación aplana la bolsa para obtener una palabra en cada fila
 palabras = FOREACH lineas_de_entrada GENERATE FLATTEN(TOKENIZE(linea)) AS palabra;
 
 -- elimina cualquier palabra que sólo contenga espacios en blanco
 palabras_filtradas = FILTER palabras BY palabra MATCHES '\\w+';
 
 -- crear un grupo para cada palabra
 grupo_de_palabras = GROUP palabras_filtradas BY palabra;
 
 -- contar las entradas en cada grupo
 conteo_de_palabras = FOREACH grupo_de_palabras GENERATE COUNT(palabras_filtradas) AS conteo, group AS palabra;
 
 -- ordenar los registros por recuento
 conteo_de_palabras_ordenado = ORDER conteo_de_palabras BY conteo DESC;
 STORE conteo_de_palabras_ordenado INTO '/tmp/numero-de-palabras-en-internet';

El programa anterior generarà tasques executables paral·leles que es poden distribuir a través de diverses màquines en un clúster Hadoop per comptar el nombre de paraules en un conjunt de dades com totes les pàgines web a Internet.

Véase también[editar]

Referencias[editar]

  1. a b «Hadoop: Apache Pig». Consultado el 2 de septiembre de 2011. 
  2. «Pig user defined functions». Consultado el 3 de mayo de 2013. 
  3. «Yahoo Blog:Pig – The Road to an Efficient High-level language for Hadoop». Archivado desde el original el 3 de febrero de 2016. Consultado el 23 de mayo de 2015. 
  4. «Pig into Incubation at the Apache Software Foundation». Archivado desde el original el 3 de febrero de 2016. Consultado el 23 de mayo de 2015. 
  5. «The Apache Software Foundation». Consultado el 1 de noviembre de 2010. 

Enlaces externos[editar]