WordCount usando RecordReader

Cómo vimos en la anterior entrada por fin probamos un código del tipo MapReduce en nuestro ambiente construido a lo largo de este post. Probamos el Famoso código de WordCount, pero como se menciono en el apartado de Teoría de MapReduce, podemos utilizar pasos intermedios que un proceso MapReduce contiene, en esta nueva entrada programaremos de nuevo el WordCount, pero esta vez las palabras no vendrán de un archivo de texto que nosotros podemos copiar y poner en el, esta vez utilizaremos archivos no estructurados como archivos docx, pptx, pdf, xlsx, xls, ppt, doc las palabras  las extraeremos de estos archivos no estructurados.

El código al igual que el anterior lo podrán encontrar en el siguiente link:
https://github.com/NeoChoosenOne/BigDataBlogCodeWordCountRecordReader.

Este código implementa el RecordReader para definir nuestra forma personalizada de leer la información de HDFS y poderla procesar a nuestra manera, definiendo nosotros nuestros pares (key,value) personalizados.

Comenzaremos mostrando la ubicación del código compilado que ahora ejecutaremos para esta entrada, el jar lo encontraremos en la carpeta target.



Y el jar que ejecutaremos tiene el siguiente nombre, este jar si solo quieren seguir la entrada de que es lo que hace el código pueden descargar este jar, si quieren saber como esta programado, aquí mismo se encuentra el código.



Una vez descargado el jar, procederemos a hacer la prueba del código ustedes pueden probar con cualquier archivo tipo doc, docx, pdf, ppt, pptx, xls, xlsx siempre y cuando no sean imágenes o tengan seguridad o estén encriptados.

Yo tengo una carpeta con los siguientes archivos:


Los archivos lucen de la siguiente manera:

BigData.pptx



Biomoleculas.ppt



Inegi.xls



Mesure.pdf



Que_es_la_biotecnologia.pdf



Universe.pptx



versos_word.docx



Como pueden ver yo estoy agarrando diferentes tipos de archivos no estructurados, estos archivos los subiere a una carpeta llamada /WordCountRecordReaderBlogExample, comenzamos por crear esta carpeta en HDFS. En Browse the File System podremos observar la nueva carpeta.



En esta carpeta subiré los archivos anteriores de mi Local File System a HDFS.



Una vez que los archivos se encuentren en el File System de Hadoop y con el jar en nuestra máquina con hadoop, procedemos a ejecutar el Job con el siguiente comando.

hadoop jar wordcountbloginput-0.0.1-SNAPSHOT-jar-with-dependencies.jar /WordCountRecordReaderBlogExample /output

Una vez ejecutado el comando anterior deberíamos ver una salida como la siguiente:







Una vez que termine la ejecución del Job en Browse Directory el Job nos creará una carpeta llamada /output la cual tendrá nuestro resultado.



El archivo part-r-00000 dentro de la carpeta /output es la que contiene el resultado de nuestro proceso, descargamos este archivo y vemos su contenido.



El contenido del part-r-00000 es un wordcount pero extrayendo la información de archivos no estructurados, el resultado debería verse similar a lo siguiente, obviamente dependiendo del contenido del texto que ustedes usen para ejecutar el ejemplo.




Como podrán ver hace prácticamente lo mismo que el primer ejemplo, pero este tiene implementada la clase del RecordReader para poder definir nuestra propia forma de mandarle al mapper el par (key,value).

Con esto podemos modificar de varias formas la manera de leer y mandarle información al mapper de acuerdo a lo que necesitemos, esto hace más poderoso el MapReduce.

Como conclusión no esta de más saber como funciona el MapReduce ya que es el inicio de todo el procesamiento en Big Data, y aunque procesamientos como Tez o Spark hoy nos facilitan la programación siempre y nos ofrecen más funcionalidad, soy del tipo de personas que saber lo básico hace lo maravilloso.

Comentarios

Entradas más populares de este blog

Manejo Apache Hive

Replicación y Formas de Paralelización Apache Hadoop

Asignación de un líder Zookeeper