07.05.2013 Views

UNIDAD ZACATENCO DEPARTAMENTO DE ... - Cinvestav

UNIDAD ZACATENCO DEPARTAMENTO DE ... - Cinvestav

UNIDAD ZACATENCO DEPARTAMENTO DE ... - Cinvestav

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

MapReduce 25<br />

1 public class Reduce extends Reducer {<br />

2 public void reduce ( Text key , I t e r a b l e values , Context<br />

context ) throws IOException , InterruptedException {<br />

3 int sum = 0 ;<br />

4 // Suma l o s unos de cada p a l a b r a<br />

5 for ( IntWritable val : v a l u e s ) {<br />

6 sum += val . get ( ) ;<br />

7 }<br />

8 // Emite e l par <br />

9 context . w r i t e ( key , new IntWritable (sum) ) ;<br />

10 }<br />

11 }<br />

Código 2.8: Clase reduce en Hadoop para contar el número de veces que se repite una<br />

palabra en varios archivos.<br />

1 #! / usr / bin /env python<br />

2 import sys<br />

3 # La entrada v i e n e de l a entrada estándar<br />

4 for l i n e in sys . s t d i n :<br />

5 # d i v i d e l a l í n e a en p a l a b r a s<br />

6 words = l i n e . s p l i t ( )<br />

7 # Por cada p a l a b r a encontrada<br />

8 for word in words :<br />

9 # Imprime en l a s a l i d a estándar una cadena<br />

10 # c o n s t i t u i d a por l a palabra , un c a r á c t e r t a b u l a d o r y un uno<br />

11 print ’ %s \ t %s ’ % ( word , 1)<br />

Código 2.9: Función map del programa mapreduce que cuenta las veces que las<br />

palabras se repiten en varios archivos en Python (map.py).<br />

hadoop jar cuenta.jar CountWords inputPathInHDFS outputPathInHDFS<br />

Nótese que se pasó un directorio y MapReduce va a leer todos los archivos del<br />

directorio. Se puede enviar un solo archivo.<br />

2.4.2. Programa mapreduce escrito en Python<br />

El “programa cuenta” se puede implementar a través de un programa mapreduce<br />

escrito en Python. El código 2.9 presenta la función map y el código 2.10 presenta la<br />

función reduce en Python.<br />

Observe que la función map en Python es idéntica a la función map en Java.<br />

<strong>Cinvestav</strong> Departamento de Computación

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!