Actualmente estoy implementando PageRank en Disco. Como algoritmo iterativo, los resultados de una iteración se utilizan como entrada para la siguiente iteración.Disco/MapReduce: Uso de los resultados de la iteración anterior como entrada a la nueva iteración
Tengo un archivo grande que representa todos los enlaces, con cada fila que representa una página y los valores en la fila que representa las páginas a las que se vincula.
Para Disco, rompo este archivo en N trozos, luego ejecuto MapReduce por una ronda. Como resultado, obtengo un conjunto de tuplas (de página, rango).
Me gustaría dar este rango a la próxima iteración. Sin embargo, ahora mi asignador necesita dos entradas: el archivo de gráficos y los ejecutores de páginas.
- me gustaría "zip", junto el archivo gráfico y las filas de la página, tal manera que cada línea representa una página , que es el rango, y que está fuera de enlaces.
- Dado que este archivo gráfico se separa en N trozos, necesito dividir el vector pagerank en N trozos paralelos y código postal las regiones de los vectores pagerank a la gráfica trozos
Todo esto parece más más complicado de lo necesario, y como una operación bastante sencilla (con el algoritmo de reducción de mapas por excelencia), parece que me falta algo sobre Disco que realmente podría simplificar el enfoque.
¿Alguna idea?