私は周りにいて1000 files
、各ファイルのサイズは1GB
. 1000 files
そして、これらすべての文字列と、その特定の文字列を含むファイルを見つける必要があります。私は Hadoop ファイル システムを使用していますが、それら1000 files
はすべて Hadoop ファイル システムにあります。
すべて1000 files
が実際のフォルダーの下にあるため、以下のようにすると、すべての1000 files
. そして、実際のフォルダーの下に特定の文字列helloが含まれているファイルを見つける必要があります。
bash-3.00$ hadoop fs -ls /technology/dps/real
そして、これはhdfsの私のデータ構造です-
row format delimited
fields terminated by '\29'
collection items terminated by ','
map keys terminated by ':'
stored as textfile
特定の文字列を含むファイルを見つけられるように、この特定の問題を解決するために MapReduce ジョブを作成するにはどうすればよいでしょうか? 簡単な例は、私にとって非常に役立ちます。
アップデート:-
Unixでgrepを使用すると、上記の問題のシナリオを解決できますが、非常に遅く、実際の出力を取得するのに多くの時間がかかります-
hadoop fs -ls /technology/dps/real | awk '{print $8}' | while read f; do hadoop fs -cat $f | grep cec7051a1380a47a4497a107fecb84c1 >/dev/null && echo $f; done
それが、この種の問題を解決するための MapReduce ジョブを探していた理由です...