- Instalando Apache Hadoop en modo Pseudo-Distribuido
- Primeros pasos con Apache Pig. Usando Pig para hacer un contador de palabras
- Creando scripts en Apache Pig para Hadoop
Cuando tengamos el paso 3 terminado, tendremos un fichero con un script en Pig listo para ejecutarse en el cluster. Supongamos que el nombre del script es "wordcountPig.pig" y que el fichero del que queremos contar se llama "prueba.txt".
Lo primero que tendremos que hacer es arrancar el cluster de Hadoop como indica el primero de los tutoriales y copiar el fichero "prueba.txt" al HDFS
hadoop fs -mkdir /pig hadoop fs -put prueba.txt /pig
Una vez tengamos el fichero dentro del HDFS, vamos a usar el mismo script del tercer tutorial con una ligera variación para indicarle la localización del fichero:
Las dos líneas que han variado son la que indica la ruta para cargar el fichero y la última, que indica la ruta donde guardar el fichero con los resultados.
Por último, vamos a ejecutar el script:
Cabe resaltar que esta vez hemos omitido el "-x" y la palabra "local" ya que vamos a hacer una ejecución real dentro del cluster. El resultado se guarda también dentro del HDFS y es el esperado:
Podéis ver el resultado del script en el archivo part-r-00000. Espero que os haya gustado.
/* Cargar el fichero */ myfile = LOAD '/pig/tweets' AS (words:chararray); /* Separar las palabras dentro de cada linea */ wordsList = FOREACH myfile GENERATE TOKENIZE($0); /* Separar las palabras a una linea por palabra */ words = FOREACH wordsList GENERATE FLATTEN($0); /* Agrupar las palabras iguales en la misma linea */ groupedWords = GROUP words BY $0; /* Contar las palabras */ final = FOREACH groupedWords GENERATE $0, COUNT($1); /* Ordenar las palabras */ sortedWords = ORDER final BY $1 ASC; /* Guardar los resultados en una carpeta llamada pig_wordcount */ STORE sortedWords into '/pig/pig_wordcount';
Las dos líneas que han variado son la que indica la ruta para cargar el fichero y la última, que indica la ruta donde guardar el fichero con los resultados.
Por último, vamos a ejecutar el script:
pig wordcount.pig
Cabe resaltar que esta vez hemos omitido el "-x" y la palabra "local" ya que vamos a hacer una ejecución real dentro del cluster. El resultado se guarda también dentro del HDFS y es el esperado:
hadoop fs -ls /user/MaC/pig/pig_wordcount Found 3 items -rw-r--r-- 2 mariocaster supergroup 0 2014-06-02 17:43 /pig/pig_wordcount/_SUCCESS drwxr-xr-x - mariocaster supergroup 0 2014-06-02 17:42 /pig/pig_wordcount/_logs -rw-r--r-- 2 mariocaster supergroup 6768 2014-06-02 17:43 /pig/pig_wordcount/part-r-00000
Podéis ver el resultado del script en el archivo part-r-00000. Espero que os haya gustado.