Nel seguente esempio:R + Hadoop: come leggere il file CSV da HDFS ed eseguire mapreduce?
small.ints = to.dfs(1:1000)
mapreduce(
input = small.ints,
map = function(k, v) cbind(v, v^2))
L'immissione dei dati per la funzione MapReduce è un oggetto denominato small.ints che refered file di HDFS.
Ora ho un file CSV già memorizzato in HDFS come
"hdfs://172.16.1.58:8020/tmp/test_short.csv"
Come ottenere un oggetto per esso?
E per quanto ne so (che potrebbe essere errato), se voglio dati da file CSV come input per mapreduce, devo prima generare una tabella in R che contenga tutti i valori nel file CSV. Io ho metodo come:
data=from.dfs("hdfs://172.16.1.58:8020/tmp/test_short.csv",make.input.format(format="csv",sep=","))
mydata=data$val
Sembra OK per utilizzare questo metodo per ottenere mydata, e poi fare oggetto = to.dfs (mydata), ma il problema è il file test_short.csv è enorme, che è attorno alla dimensione della TB e la memoria non può contenere l'output di from.dfs !!
In realtà, mi chiedo se uso "hdfs: //172.16.1.58: 8020/tmp/test_short.csv" come input di ridimensionamento della mappa direttamente, e all'interno della funzione map do la cosa from.dfs(), sono io in grado di ottenere blocchi di dati?
Per favore, dammi un consiglio, qualunque cosa!
Oh, non ho notato posso mettere il formato di input in MapReduce argomento()! Ho letto la tua wiki che diceva che to.dfs e from.dfs sono usati solo per piccoli dati e test. Grazie per l'aiuto! –