Je sais que sur le terminal, on peut faire une commande mais, quand je suis dans le système de fichiers Hadoop , Je n'ai pas trouvé de moyen de faire cela. P> jette une erreur. P> Comment les gens traversent les fichiers dans hadoop? J'utilise trouver code> pour rechercher des fichiers tels que:
hadoop 2.6.0-CDH5.4.1 code>. P> p>
4 Réponses :
Entre-temps vous pouvez Utilisez P> hadoop fs -find code> a été introduit dans Apache Hadoop 2.7.0. Très probablement, vous utilisez une version plus ancienne d'où vous ne l'avez pas encore.
Voir: hadoop-8989 pour plus d'informations.
hdfs dfs -ls -R <pattern>
Merci. Avez-vous une idée comment utiliser l'option code> "/ code>" expression "? Les documents disent: Les opérateurs suivants sont reconnus: expression expression expression-et expression expression expression code> mais je n'ai aucune idée de ce que cela signifie. "
Si vous utilisez la pile Cloudera, essayez l'outil de recherche:
${COMMAND} -find . -name "something" -type d ...
Ajout de HDFSFindTool comme alias dans .bash_profile, facilitera toujours la tâche. P>
- Ajouter ci-dessous au profil alias hdfsfind = 'hadoop jar /opt/cloudera/parcels/cdh/lib/solr/contrib/mr/search-mr-job.jar org.apache.solr.haadoop.hdfsfindTool' alias hdfs = 'hadoop fs' p>
- u peut utiliser comme suit maintenant: (me utilise ici Rechercher l'outil pour obtenir le dossier de sources HDFS Nom du fichier et enregistrer des fichiers.) p>
$> cnt = 1; pour FF dans - Simple pour obtenir le dossier / Détails du fichier:
$> HDFSFind -Find / dev / abc / -type f -Name "* .csv"
$> HDFSFind -Find / dev / abc / -type d -Name " jouets em>" p> HDFSFind -Find /Dev/ABC/*/2018/02/16/*.CSV -TYPE F code>; faire pp =
echo $ {ff} | awk -f "/" {impression 7 $} ' code>; fn =
basseName $ {FF} code>; fcnt =
hdfs -cat $ {ff} | wc -l code>; echo "$ {cnt} = $ {pp} = $ {fn} = $ {fcnt}"; cnt =
EXPR $ {CNT} + 1 code>; fait p>
Ce que vous n'avez pas les colis de Cloudera disponibles Vous pouvez utiliser AWK.
hdfs dfs -ls -R /some_path | awk -F / '/^d/ && (NF <= 5) && /something/'
Il "jette une erreur"? Quelle erreur?
trouver code> est ce que je pense que la plupart des gens utilisent.
Pour les futurs demandeurs d'aide, sur
Hadoop 2.6.0-CDH5.4.1 CODE>, il semble que cela ne fonctionne pas:
hadoop fs -ls -r code>, mais Une solution raisonnable est la suivante:
Hadoop FS -LS -R | Egrep code>