2012-07-26 1 views
5

Sono nuovo di R. So come scrivere la mappa ridurre in Java. Voglio provare la stessa in R. Così può qualsiasi aiuto nel dare i codici samle e v'è alcuna formato fisso lì per MapReduce in R.Come scrivere la mappa ridurre in R?

Si prega di inviare link diverso da questo: https://github.com/RevolutionAnalytics/RHadoop/wiki/Tutorial

Qualsiasi campione i codici saranno più utili.

+1

Una ricerca su Google per '[r] mapreduce' darà una serie di link utili, come questo pacchetto: http: // cran. r-project.org/web/packages/mapReduce/index.html e questo blog: http://www.r-bloggers.com/making-sense-of-mapreduce/ – Andrie

+6

Per la persona che in silenzio downvoted: questo è il estate d'amore http://blog.stackoverflow.com/2012/0 7/calci-off-the-estate-di-amore /, quindi vi consiglio di fare una delle poche cose 1) Spiegare perché la downvote, 2) Spiegare al PO come migliorare la domanda 3) modificare la domanda in modo da è una bella domanda – Andrie

+1

Non un down-voter ma ecco qui. Manoj, penso che dovresti riformulare la tua domanda un po '. Per favore aggiungi le informazioni che hai provato. Qualcosa sulla falsariga di "Ho scritto MR in Java, ma ora mi piacerebbe provarlo in R. Ho letto questo tutorial e ho fatto questa e quella ricerca ma ero interessato a più tutorial che mi sono sfuggiti." . Quello che potresti fare è anche raccogliere un elenco di tutti i riferimenti riguardanti R e MR (se non già esistenti) e rendere questa domanda una wiki. –

risposta

2

Quando si desidera implementare una mappa a ridurre (con Hadoop) in una lingua diversa da Java, quindi si utilizza una funzione chiamata streaming. Quindi i dati viene alimentata al mappatore via STDIN (readlines()), ritorna Hadoop via STDOUT (cat()), quindi al riduttore nuovo attraverso STDIN (readlines()) e blurted infine via STDOUT (cat()).

Il codice che segue è tratto da un article ho scritto sulla scrittura di una mappa a ridurre lavoro con R per Hadoop. Il codice dovrebbe contare 2 grammi, ma direi abbastanza semplice da vedere cosa sta succedendo su MapReduce.

# 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/

Problemi correlati