我想在HDFS中搜索并准确列出包含我的搜索字符串的文件, 我的第二个要求是有任何可能的方法来搜索文件HDFS中的一系列值。
让我们假设以下是我的文件,它包含以下数据
/user/hadoop/test.txt
101,ABC
102,DEF
103,GHI
104,AAA
105,BBB
是否有任何可能的方法使用范围[101-104]进行搜索,以便返回包含以下数据范围的文件。
答案 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