2015-09-16 12 views
13

私はHDFS上にいくつの行があるか知りたいファイルを持っています。 (テストファイル)hdfsコマンドでファイル内の行を数える方法は?

Linuxでは、私が行うことができます。

wc -l <filename> 

は、私が "HadoopのFS" コマンドを使用して、類似した何かを行うことができますか?

hadoop fs -text /user/mklein/testfile 

私はいくつの行を持っているのですか?ファイルをローカルファイルシステムにコピーしてから、wcコマンドを実行しないようにしたい。

注:私のファイルは、私が代わりに-cat

答えて

4

の-text使用する必要がありますあなたがhadoop fsコマンドでそれを行うことができない理由であるてきぱき圧縮を使用して圧縮されます。このpostで説明されているロジックを使って地図作成コードを書く必要があるか、この豚のスクリプトが役に立ちます。

A = LOAD 'file' using PigStorage() as(...); 
B = group A all; 
cnt = foreach B generate COUNT(A); 

豚がそれを検出して読み取ることができるように、あなたのスナッピーファイルの正しい拡張子を持ってください。

+0

これは実際には正しい方法ではありません。簡単な方法は以下の通りです – ggorantl

43

合計ファイル数: hadoop fs -ls/path/to/hdfs/* | wc -l

合計行数: hadoop fs -cat/path/to/hdfs/* |マッパー出力ファイルの行のトイレ-l

+2

私はこの回答を多く受け入れています。受け入れられたものは、これが完璧な答えであるオーバーヘッドのように思えます。よくやった! – Puttzy

+12

これは、hdfsフォルダのすべてのデータをローカルマシンにプルし、ローカルに行をカウントすることに注意してください。データ量が大きい場合、ネットワークIOとメモリ使用のボトルネックのために非常に遅い可能性があります。大きなデータの場合、map-reduce/pigアプローチがより良いでしょう。 –

+0

@ScottH素晴らしいコメントです。非常に大きなセットの場合、私はIOについて心配しますが、メモリ使用量が問題であると確信していますか?'hadoop fs -cat something?私はあなたが行くように、データが「削減」されることを期待しています。 –

1

1.番号:

〜] $のHadoopのFSの-cat /ユーザー/ Clouderaの/出力/パート-M-00000 |テキストまたはHDFS上の他のファイルの行のトイレ-l

2.数:

〜] $のHadoopのFS -cat /user/cloudera/output/abc.txt | トイレ-l

3.トップ(ヘッダ)は、テキストやHDFS上の他のファイルの5行:

〜] $のHadoopのFS -cat /user/cloudera/output/abc.txt | ヘッド-5テキストやHDFS上の他のファイルの

4.下10行:

〜] $のHadoopのFS -cat /user/cloudera/output/abc.txt | テール-10

関連する問題