Je travaille actuellement sur un projet utilisant Hadoop DFS.
Je remarque qu'il n'y a pas de commande de recherche ou de recherche dans Hadoop Shell. Existe-t-il un moyen de rechercher et de trouver un fichier (par exemple, testfile.doc) dans Hadoop DFS?
Hadoop prend-il en charge la recherche de contenu de fichier? Dans l'affirmative, comment le faire? Par exemple, j'ai beaucoup de fichiers Word Doc stockés dans HDFS, je veux lister ceux qui contiennent les mots "informatique".
Qu'en est-il des autres systèmes de fichiers distribués? La recherche de contenu de fichier est-elle un point faible des systèmes de fichiers distribués?
hdfs dfs -ls -R / | grep [search_term]
.Selon la manière dont les données sont stockées dans HDFS, vous devrez peut-être utiliser l'option -text pour dfs pour une recherche de chaîne. Dans mon cas, des milliers de messages étaient stockés quotidiennement dans une série de fichiers de séquence HDFS au format AVRO. A partir de la ligne de commande sur un nœud Edge, ce script:
Il existe une implémentation solr jar-file qui est supposément plus rapide que je n’ai pas essayée.
hadoop fs -ls /data/lake/raw | awk {'print $6" "$8'} | grep 2018-05-03 | awk {'print $2'} | while read f; do hadoop fs -text $f | grep 7375675 && echo $f ; done
Vous pouvez utiliser hadoop.HdfsFindTool avec solr, est plus rapide que 'hdfs dfs ls -R' et plus utile.
hadoop jar search-mr-job.jar org.Apache.solr.hadoop.HdfsFindTool -find /user/Hive/tmp -mtime 7
Usage: hadoop fs [generic options]
[-find <path> ... <expression> ...]
[-help [cmd ...]]
[-usage [cmd ...]]
Pour 1, vous pouvez chercher comme ceci:
hadoop -find . -name "<name_of_file>"