在HDFS中搜索文件中的字符串或数字范围

时间:2017-05-26 06:13:50

标签: hadoop hadoop2

我想在HDFS中搜索并准确列出包含我的搜索字符串的文件, 我的第二个要求是有任何可能的方法来搜索文件HDFS中的一系列值。

让我们假设以下是我的文件,它包含以下数据

/user/hadoop/test.txt

101,ABC
102,DEF
103,GHI
104,AAA
105,BBB

是否有任何可能的方法使用范围[101-104]进行搜索,以便返回包含以下数据范围的文件。

1 个答案:

答案 0 :(得分:0)

显示带有模式的文件名。让循环遍历hdfs目录,其中有文件可以说。

hdfs_files=`hdfs dfs -ls /user/hadoop/|awk '{print $8}'`
for file in `echo $hdfs_files`;
 do
  patterns=`hdfs dfs -cat $file|egrep -o "10[1-4]"`
  patterns_count=`echo $patterns|tr ' ' "\n"|wc -l`
   if [ $patterns_count -eq 4 ]; then 
    echo $file;
   fi
 done

现在解决第二个要求" 在文件HDFS中搜索一系列值"使用shell命令: -

hdfs dfs -cat /user/hadoop/test.txt|egrep "10[1-4]"

输出: -

101,abc
102,def
103,ghi
104,aaa

或只匹配第一列

hdfs dfs -cat /user/hadoop/test.txt|egrep -o "10[1-4]"

输出: -

101
102
103
104