2016-08-08 1 views
2

Я пытался читать большие файлы csv из HDFS в R, используя пакет data.table, поскольку он намного быстрее, чем пакет rhdfs по моему опыту.Чтение csv файлов из HDFS в R с использованием fread() и grep - потерянных имен столбцов

я был успешным с чтением файлов целиком с помощью следующих команд:

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

Тогда, я хотел бы читать только в строках, которые содержат значение «2MS-США». Я пытался сделать это с grep:

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

Это возвращает правильное число строк, но он удаляет все заголовки. Теперь они становятся «V1», «V2» и т. Д.

В соответствии с этим thread проблема с потерями имен столбцов при использовании grep была решена в data.package 1.9.6, но я все еще испытываю это, хотя Я использую 1.9.7. Любые мысли по этому поводу? Благодаря!

ответ

3

Исправлена ​​проблема с использованием sed вместо:

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

1p часть печатает первые строки, которые являются заголовки, так что этот путь я был в состоянии держать заголовки, а также строк, которые соответствуют строка.