我有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 工作来解决这类问题的原因......