2017-03-23 4 views
1

Ich versuche, eine 7.7GB Datei mit fread zu lesen, aber ich erhalte eine Fehlermeldung, die, dass es schlägt nur hörte auf zu lesen, nachdem partway durch die Datei bekommen:fread stoppt CSV nach 4GB Lesen

cdr <- fread('/path/to/data.csv') 
Read 1687 rows and 610989 (of 610989) columns from 4.000 GB file in 00:02:37 
Warning message: 
In fread("/path/to/data.csv") : 
Stopped reading at empty line 1688 but text exists afterwards (discarded) 

cdr <- fread('/path/to/data.csv', nrows = 2000) 
Read 0.0% of 2000 rows 
Error in fread("/path/to/data.csv", nrows = 2000) : 
Expected sep (',') but new line or EOF ends field 500054 on line 1688 when reading data 

Beachten Sie, dass Die Fehlermeldung besagt, dass die Dateien 4.000 GB groß sind, aber tatsächlich 7.7 GB. In ähnlicher Weise gibt die Fehlermeldung an, dass die Datei 1687 Zeilen enthält, aber tatsächlich 3378 Zeilen.

Ich habe überprüft, und ich kann bestätigen, dass es keine leere Zeile in dieser Datei (thanks @MrFlick for the suggestion).

R läuft auf einer 64-Bit-Ubuntu-Instanz, und pro https://stackoverflow.com/a/18091755/ Ich überprüfte .Machine$sizeof.pointer und bekam 8 (ich glaube, das zeigt an, dass ich R in 64 Bits laufen lasse).

+0

Die Fehlermeldung besagt, dass in Ihrer Eingabedatei eine leere Zeile vorhanden ist, die zum Stoppen führt. Ist das der Fall? Hast du eine Leerzeile in deiner Eingabe erwartet? – MrFlick

+0

Gute Frage. Das ist ein Negativ; Ich habe überprüft, dass in der Datei keine Leerzeile vorhanden ist. – user5568265

+1

können Sie versuchen, 'blank.lines.skip = TRUE' zu überprüfen, ob es funktioniert –

Antwort

0

Nun, das ist peinlich. Es stellt sich heraus, dass ich fread gegen die falsche Datei ausgeführt habe - eine Datei, die zufällig genau 4 GB war, weil sie während einer fehlgeschlagenen Entpacken-Operation abgeschnitten wurde.

Die echte Datei war eigentlich an einem anderen Ort, aber die beiden Dateien wurden gleich benannt und hatten ähnliche Pfade, also habe ich sie durcheinander gebracht.

Wenn ich fread 'ed die echte 7,7 GB Datei, alles funktioniert wie erwartet.