Volevo sapere se esiste un limite al numero di righe che può essere letto utilizzando la funzione di battitura data.table. Sto lavorando con un tavolo con 4 miliardi di righe, 4 colonne, circa 40 GB. Sembra che fread leggerà solo i primi ~ 840 milioni di righe. Non dà errori, ma ritorna al prompt R come se avesse letto tutti i dati!Limite di riga per data.table in R utilizzando il tasto
Capisco che al momento non ci sia "prod use", e volevo scoprire se ci fosse un periodo di tempo per l'implementazione di un rilascio.
Il motivo per cui sto usando data.table è che, per i file di tali dimensioni, è estremamente efficiente l'elaborazione dei dati rispetto al caricamento del file in un data.frame, ecc
Al momento, sto cercando 2 altre alternative -
1) Utilizzando la scansione e la trasmissione ad un data.table
data.table(matrix(scan("file.csv",what="integer",sep=","),ncol=4))
Resulted in --
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
too many items
2) Rompere il file fino in segmenti individuali con un limite di circa mq. 500 milioni di righe usando Unix diviso e leggendole in sequenza ... quindi eseguendo il looping dei file in modo sequenziale su un piano - un po 'macchinoso, ma sembra essere l'unica soluzione praticabile.
Penso che ci possa essere un modo Rcpp per farlo ancora più veloce, ma non sono sicuro di come sia generalmente implementato.
Grazie in anticipo.
Assicurarsi che ci sia nulla di insolito nel file nell'ultima riga che è stato letto o la linea dopo che e poi [Invia] (https: // r-forge. r-project.org/tracker/?group_id=240) una segnalazione di bug o contattare il mantainer del pacchetto. – Roland
Sei sicuro di avere abbastanza RAM? E stai lavorando con 64bit R? – eddi
No, non c'è necessariamente un modo più veloce con Rcpp dato che Matt usa già mmap. Controlla la documentazione del tuo sistema operativo per i limiti della chiamata mmap. Miliardi potrebbero spingerlo ... –