2012-07-26 19 views
5

Soy nuevo en R. Sé cómo escribir map reduction en Java. Quiero tratar de la misma en R. Entonces, ¿puede alguien ayudar en dar los códigos samle y es allí cualquier formato fijo allí para MapReduce en R.Cómo escribir el mapa reducir en R?

Por favor enviar cualquier enlace que no sea esta: https://github.com/RevolutionAnalytics/RHadoop/wiki/Tutorial

Cualquier muestra los códigos serán más útiles.

+1

Una búsqueda en Google de 'mapreduce' [r] dará una serie de enlaces de interés, como este paquete: http: // cran. r-project.org/web/packages/mapReduce/index.html y este blog: http://www.r-bloggers.com/making-sense-of-mapreduce/ – Andrie

+6

Para la persona que silenciosamente votó negativamente: Esta es la verano de amor http://blog.stackoverflow.com/2012/0 7/kick-off-the-summer-of-love /, entonces sugiero que hagas algunas de las siguientes cosas: 1) Explica por qué el downvote, 2) Explica al OP cómo mejorar la pregunta 3) Edita la pregunta para que es una buena pregunta – Andrie

+1

No es un votante atrasado, pero aquí va. Manoj, creo que deberías volver a formular tu pregunta un poco. Por favor, agregue la información que ha intentado. Algo así como "He estado escribiendo MR en Java, pero ahora me gustaría probarlo en R. He leído este tutorial e hice esta y otra búsqueda, pero estaba interesado en más tutoriales que se me han escapado". . Lo que también podría hacer es recopilar una lista de todas las referencias con respecto a R y MR (si aún no existe) y hacer de esta pregunta una wiki. –

Respuesta

2

Cuando desee implementar un mapa para reducir (con Hadoop) en un idioma que no sea Java, utilice una característica llamada transmisión. Luego los datos se envían al mapeador a través de STDIN (readLines()), de vuelta a Hadoop a través de STDOUT (cat()), luego al reductor de nuevo a través de STDIN (readLines()) y finalmente se escuchan a través de STDOUT (cat()).

El siguiente código está tomado de article que escribí al escribir un trabajo de reducción de mapa con R para Hadoop. Se supone que el código cuenta 2 gramos, pero diría que es lo suficientemente simple como para ver qué está sucediendo en MapReduce-wise.

# map.R 

library(stringdist, quietly=TRUE) 

input <- file("stdin", "r") 

while(length(line <- readLines(input, n=1, warn=FALSE)) > 0) { 
    # in case of empty lines 
    # more sophisticated defensive code makes sense here 
    if(nchar(line) == 0) break 

    fields <- unlist(strsplit(line, "\t")) 

    # extract 2-grams 
    d <- qgrams(tolower(fields[4]), q=2) 

    for(i in 1:ncol(d)) { 
    # language/2-gram/count 
    cat(fields[2], "\t", colnames(d)[i], "\t", d[1,i], "\n") 
    } 
} 

close(input) 

-

# reduce.R 

input <- file("stdin", "r") 

# initialize variables that keep 
# track of the state 

is_first_line <- TRUE 

while(length(line <- readLines(input, n=1, warn=FALSE)) > 0) { 
    line <- unlist(strsplit(line, "\t")) 
    # current line belongs to previous 
    # line's key pair 
    if(!is_first_line && 
     prev_lang == line[1] && 
     prev_2gram == line[2]) { 
     sum <- sum + as.integer(line[3]) 
    } 
    # current line belongs either to a 
    # new key pair or is first line 
    else { 
    # new key pair - so output the last 
    # key pair's result 
    if(!is_first_line) { 
     # language/2-gram/count 
     cat(prev_lang,"\t",prev_2gram,"\t",sum,"\n") 
    } 
    # initialize state trackers 
    prev_lang <- line[1] 
    prev_2gram <- line[2] 
    sum <- as.integer(line[3]) 
    is_first_line <- FALSE 
    } 
} 

# the final record 
cat(prev_lang,"\t",prev_2gram, "\t", sum, "\n") 

close(input) 

http://www.joyofdata.de/blog/mapreduce-r-hadoop-amazon-emr/

Cuestiones relacionadas