2017-09-19 4 views
0

Comme par hadoop code source descriptions ci-dessous sont extraits des classes -quelle est la différence entre Hadoop -appendToFile par rapport Hadoop -Mettre lorsqu'il est utilisé pour la mise à jour des données de flux dans HDFS continously

appendToFile

"Appends the contents of all the given local files to the 
given dst file. The dst file will be created if it does not exist." 

mis

"Copy files from the local file system into fs. Copying fails if the file already exists, unless the -f flag is given. 
Flags: 
-p : Preserves access and modification times, ownership and the mode. 
-f : Overwrites the destination if it already exists. 
-l : Allow DataNode to lazily persist the file to disk. Forces 
replication factor of 1. This flag will result in reduced 
durability. Use with care. 
-d : Skip creation of temporary file(<dst>._COPYING_)." 

J'essaie de mettre à jour un fichier dans hdfs régulièrement car il est mis à jour dynamiquement à partir d'une source de diffusion en continu dans mon système de fichiers local.

Lequel dois-je utiliser de appendToFile et de mettre, et pourquoi?

Répondre

1

appendToFile modifie le fichier existant dans HDFS, de sorte que seules les nouvelles données doivent être transférées/écrites sur le système de fichiers.

put réécrit le fichier entier, de sorte que toute nouvelle version du fichier doit être transmis en continu/écrit au système de fichiers.

Vous devez privilégier appendToFile si vous ajoutez simplement le fichier (c'est-à-dire en ajoutant des journaux à la fin d'un fichier). Cette fonction sera plus rapide si c'est votre cas d'utilisation. Si le fichier change plus que de simples ajouts à la fin, vous devez utiliser put (plus lent mais vous ne perdrez pas de données et ne corromprez pas votre fichier).