web-dev-qa-db-fra.com

Comment mettre à jour un fichier dans HDFS

Je sais que HDFS est écrit une fois et lu plusieurs fois.
Supposons que si je souhaite mettre à jour un fichier dans HDFS, existe-t-il un moyen de le faire?

Merci d'avance !

5
Raj

Option 1:  

Si vous voulez juste ajouter à un fichier existant

  1. echo "<Text to append>" | hdfs dfs -appendToFile - /user/hduser/myfile.txt OU

  2. hdfs dfs -appendToFile - /user/hduser/myfile.txt puis tapez le texte sur le terminal. Une fois que vous avez fini de taper puis appuyez sur 'Ctrl + D'

Option 2:  

Récupérez le fichier d'origine de HDFS sur le système de fichiers local, modifiez-le puis replacez-le sur HDFS.

  1. hdfs dfs -get /user/hduser/myfile.txt

  2. vi myfile.txt # ou utiliser un autre outil et le modifier

  3. hdfs dfs -put -f myfile.txt /user/hduser/myfile.txt

5
daemon12

Si vous souhaitez ajouter des lignes, vous devez mettre un autre fichier et concaténer des fichiers:

hdfs dfs -appendToFile localfile /user/hadoop/hadoopfile

Pour modifier une partie d'un fichier déjà écrit, vous avez trois options:

  1. Obtenir un fichier à partir de fichiers hdfs et modifier leur contenu en local

    hdfs dfs -copyToLocal /hdfs/source/path /localfs/destination/path

    ou

    hdfs dfs -cat /hdfs/source/path | modify...

  2. Utilisez une technologie de traitement pour mettre à jour en tant que Carte Réduire ou Apache Spark , le résultat apparaît sous la forme d'un répertoire de fichiers et vous supprimez les anciens fichiers. Ce devrait être le meilleur moyen.

  3. Installez NFS ou Fuse, les deux prennent en charge les opérations d’ajout.

    NFS Gateway

    Hadoop Fuse : mountableHDFS, permet de monter HDFS (sur la plupart des versions d'Unix) en tant que système de fichiers standard à l'aide de la commande mount. Une fois monté, l’utilisateur peut utiliser une instance de fichiers hdfs à l’aide d’utilitaires Unix standard tels que «ls», «cd», «cp», «mkdir», «find», «grep».

1
MrElefant