1

J'essaie d'obtenir la première ligne de tous les fichiers HDFS dans le répertoire "/ user" de mon cluster.Existe-t-il un moyen d'obtenir la première ligne de tous les fichiers HDFS dans un répertoire?

Actuellement, nous avons une table Hive qui contient des informations sur ces fichiers tels que propriétaire, chemin complet (emplacement), ID de l'entreprise du propriétaire, date de création du fichier, autorisations de lecture/écriture, etc. à cette table Hive qui contient la première ligne complète du fichier.

C'est pourquoi je cherche un moyen d'extraire la première ligne de tous les fichiers HDFS dans un répertoire (dans mon cas, le répertoire "/ user"). Puis-je réaliser cela en utilisant Spark peut-être?

Répondre

0

Vous pouvez faire une recherche récursive pour tous les fichiers puis utiliser cat et prendre la première ligne comme indiqué dans l'autre réponse par @gsamaras

hdfs dfs -ls -R /user/ | grep -v "^d" | awk '{print $8}' | while read file; do 
    echo "${file}" 
    hdfs dfs -cat ${file} | head -1 
    echo 
done 

grep est utilisé avec v drapeau pour inverser toutes les lignes commençant par d-à-dire les répertoires

awk est utilisé pour imprimer le 8ème champ dans chaque ligne qui est le nom du fichier.

+1

Cela a fonctionné pour moi! merci @philantrovert !! – PreethiS

2

Essayez quelque chose comme ceci:

hadoop fs -cat /user/* | head 

et jouer.

cat fonctionne comme/est pour concaténer.

head lit les premières lignes de tout texte qui lui est donné comme entrée et les écrit sur la sortie standard (qui, par défaut, est l'écran d'affichage)

+0

C'est une commande utile pour obtenir l'information à partir des fichiers immédiats dans le répertoire. Le problème est,/l'utilisateur en lui-même ne contient pas de fichiers, il contient plusieurs autres répertoires et ces répertoires contiennent d'autres répertoires/fichiers. Fondamentalement, il est comme un réseau de répertoires et de fichiers à l'intérieur/utilisateur et je me demandais si je pouvais obtenir l'information pour tous les fichiers dans ce "web". – PreethiS