UNIDAD ZACATENCO DEPARTAMENTO DE ... - Cinvestav
UNIDAD ZACATENCO DEPARTAMENTO DE ... - Cinvestav
UNIDAD ZACATENCO DEPARTAMENTO DE ... - Cinvestav
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