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/
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
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
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. –