Comment obtenir hadoop mis à créer des répertoires s'ils n'existent pas
J'ai été à l'aide de Cloudera hadoop (0.20.2).
Avec cette version, si je mets un fichier dans le système de fichiers, mais la structure de répertoire n'existe pas, il est automatiquement créé les répertoires parents:
Ainsi, par exemple, si je n'avais pas de répertoires dans hdfs et tapé:
hadoop fs -mettre myfile.txt /some/non/existing/path/myfile.txt
Il serait de créer tous les répertoires: certains, non, existant et chemin et de mettre le fichier en.
Maintenant, avec une nouvelle offre de hadoop (2.2.0) cette auto création de répertoires n'est pas le cas.
La même commande ci-dessus, on obtient:
mettre: ` /un peu/non/actuel/chemin/": Aucun fichier ou répertoire de
J'ai une solution pour faire hadoop fs -mkdir tout d'abord, pour tous les mettre, mais cela ne va pas à effectuer.
Est-ce configurable?
Des conseils?
>> Pourquoi ne pas effectuer? Parce que pour chaque " put " je suis en train de faire un mkdir - qui la plupart du temps peut ne pas être nécessaire, de sorte qu'il va influer sur les performances à haut débit situations.
Avez-vous envisagé d'écrire votre propre solution? Je suis surpris
put
effectue bien du tout compte tenu de tous les appels a pour démarrer une machine virtuelle, lire la configuration, etc...Salut, Non, nous n'avons pas, mais je suppose que c'est quelque chose à considérer. J'espérais qu'il pourrait être une solution facile à ce problème (de ne pas créer de parent dirs) hors de la boîte.
OriginalL'auteur owly | 2014-05-07
Vous devez vous connecter pour publier un commentaire.
Maintenant, vous devez utiliser
hadoop fs -mkdir -p <path>
comment cela répond à la question?
OriginalL'auteur art-vybor
hadoop fs ...
est déconseillé d'utiliser plutôt :hdfs dfs -mkdir ....
OriginalL'auteur aName
De placer un fichier dans un non-existant répertoire dans hdfs nécessite un processus en deux étapes. Comme @rt-výbor a déclaré, utilisez l'option '-p' pour mkdir pour créer plusieurs manquant éléments de chemin d'accès. Mais depuis l'OP demandé comment placer le fichier dans hdfs, le suivant effectue également le hdfs mettre, et notez que vous pouvez également (en option) vérifiez que le mettre réussi, et à condition de supprimer la copie locale.
D'abord créer le répertoire correspondant chemin dans hdfs, puis placer le fichier dans hdfs. Vous voulez vérifier que le fichier existe avant de les placer dans hdfs. Et vous pouvez connecter/montrer que le fichier a été correctement placé dans hdfs. Le suivant combine toutes les étapes.
Et vous pouvez le tourner dans un script shell, en prenant une hadoop chemin, et une liste de fichiers (également à seulement créer un chemin à la fois),
OriginalL'auteur ChuckCottrill