2016-08-08 7 views
2

Ich habe versucht, große csv-Dateien von HDFS in R mit dem data.table-Paket zu lesen, da es viel schneller ist als das rhdfs-Paket durch meine Erfahrung.Lesen von CSV-Dateien aus HDFS in R mit fread() und grep - verlorene Spaltennamen

Ich habe erfolgreich mit ganzen Dateien mit den folgenden Befehlen zu lesen:

data <- fread("/usr/bin/hadoop fs -text /path/to/the/file.csv"), fill=TRUE) 

Dann würde ich nur gerne in den Zeilen zu lesen, die den Wert „2 MS-US“ enthalten. Ich versuchte es mit grep zu tun:

data <- fread("/usr/bin/hadoop fs -text /path/to/the/file.csv | grep '2MS-US'"), fill=TRUE) 

Dies gibt die richtige Anzahl von Zeilen, aber es entfernt alle Header. Sie werden jetzt "V1", "V2", usw.

Gemäß dieser thread wurde das Problem mit dem Verlust von Spaltennamen bei Verwendung von grep in data.package 1.9.6 gelöst, aber ich erlebe es immer noch, obwohl Ich benutze 1.9.7. Irgendwelche Gedanken dazu? Vielen Dank!

Antwort

3

das Problem wurde behoben, durch sed statt mit:

fread("hadoop fs -text /path/to/the/file.csv |sed -n '1p;/2MS-US/p'", fill=TRUE) 

Der 1p Teil druckt die erste Zeile, die die Header sind, so dass diese Art, wie ich die Header halten konnte und die Zeilen, die das Spiel Zeichenfolge.

Verwandte Themen