我有大約1000 files
,每個文件的大小爲1GB
。我需要在所有這些1000 files
中找到一個字符串,以及哪些文件包含該特定的字符串。我正在使用Hadoop文件系統,所有這些1000 files
都在Hadoop文件系統中。使用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作業做這種問題的原因...
是你需要找到包含在文件中的文本的一部分字符串或者是它的文件名? – rtheunissen 2012-07-31 05:45:08
我認爲OP意味着在文件內容中搜索。否則他不會提到文件大小。 – 2012-07-31 05:46:43
我需要在所有這1000個文件內容中找到字符串。哪些文件包含特定的字符串是我的目標。 – ferhan 2012-07-31 05:54:57