2016-08-08 6 views
2

rhdfsパッケージよりもはるかに高速ですので、data.tableパッケージを使用してHDFSからRに大容量のcsvファイルを読み込もうとしています私の経験では。fread()とgrep-lostカラム名を使用してHDFSからRにcsvファイルを読み込みます

私は、以下のコマンドでファイル全体を読んで成功している:

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

その後、私は唯一の値「2MS-US」を含む行で読みたいです。私はgrepでそれを実行しようとしました:

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

これは、行の正しい数を返しますが、それはすべてのヘッダを削除します。

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一部のプリントヘッダいる最初の行、ので、私は、ヘッダーだけでなく、一致する行を保つことができました。この方法文字列。

関連する問題