org.apache.hadoop.mapred.FileAlreadyExistsException
J'ai essayé d'exécuter le programme d'exemple dans Hadoop donné ici
lorsque j'essaie de l'exécuter, je reçois un org.apache.hadoop.mapred.FileAlreadyExistsException
emil@psycho-O:~/project/hadoop-0.20.2$ bin/hadoop jar jar_files/wordcount.jar org.myorg.WordCount jar_files/wordcount/input jar_files/wordcount/output
11/02/06 14:54:23 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
11/02/06 14:54:23 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
Exception in thread "main" org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory file:/home/emil/project/hadoop-0.20.2/jar_files/wordcount/input already exists
at org.apache.hadoop.mapred.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:111)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:772)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:730)
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1249)
at org.myorg.WordCount.main(WordCount.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
emil@psycho-O:~/project/hadoop-0.20.2$
Son à partir de /home/emil/projet/hadoop-0.20.2/jar_files/nombre de mots/d'entrée que je prends mes fichiers d'entrée file01 et file02. Quand j'ai cherché sur google, j'ai trouvé que ceci est fait pour empêcher la ré-exécution de la même tâche. Mais dans mon cas le fichier d'entrée qui est à l'origine de l'exception.
Il n'y a rien de mal avec ma commande car je ne vois pas tous les postes avec la même erreur pour le nombre de mots de problème.
Je suis un débutant en java.
Quelle pourrait être la raison pour cela??
source d'informationauteur emiljho
Vous devez vous connecter pour publier un commentaire.
J'ai connu le même problème. M'a fallu un certain temps à comprendre ce qui se passe. Le principal problème était qu'il ne pouvait pas attacher un débogueur pour savoir quelles sont les valeurs transmises.
vous utilisez le args[0] comme entrée et args[1] comme dossier de sortie dans votre code.
Maintenant, si vous êtes en utilisant le nouveau cadre où vous consommez les lignes de commande à l'intérieur de la méthode run de l'Outil de classe, args[0] est le nom du programme exécuté qui est WordCount dans ce cas.
args[1] est le nom du dossier d'entrée vous sont spécification de ce qui est converti dans le dossier de sortie par le programme et par conséquent, vous voyez l'exception.
Donc la solution est:
utilisation args[1] args[2].
Vous devez supprimer le répertoire de sortie, vous donnez si le travail a couru une fois.
Celui-ci devrait aller pour vous.
MODIFIER
J'ai missunderstood le créateur, la pensée qu'il allait sur le worcount exemple de hadoop l'exemple du pot. Pourriez vous s'il vous plaît fournir le code source dans votre classe?
org.myorg.WordCount
Je viens de tomber sur ça et j'ai trouvé que j'avais à faire les deux ce Sandeep et Thomas dit: utiliser args[1] args[2] dans l'exemple de code et assurer la sortie répertoire n'existe pas, malgré ce que l'exemple dit.
C'est pour éviter d'écraser les résultats précédents.
Vous pouvez nettoyer et de supprimer le chemin de sortie lors de la création et le paramétrage de l'emploi:
Oui. J'ai rencontré le même problème. Quand j'ai enlevé
org.myorg.WordCount
il a très bien fonctionné.Edit:
La seule entrée de la poste s'attend à l'entrée et à la sortie du chemin