Je suis capable de trouver le nom si le fichier d'entrée dans une classe MAPER utilisant des fichiersPlit lors de la rédaction du programme en Java. P>
Y a-t-il un moyen correspondant de le faire lorsque j'écris un programme en Python (en utilisant le streaming?) p>
J'ai trouvé ce qui suit dans le document Streaming Hadoop sur Apache: P>
voir les paramètres configurés. Lors de l'exécution d'un emploi en streaming, Les noms des paramètres «Mapred» sont transformés. Les points ( . ) devenir des traits de soulignement (_). Par exemple, mapred.job.id devient mapred_job_id et mapred.jar devient mapred_jar. Dans votre code, utilisez le Noms de paramètres avec les traits de soulignement. P> blockQuote>
Mais je ne peux toujours pas comprendre comment utiliser cela à l'intérieur de mon mappeur. P>
Toute aide est très appréciée. P>
merci p>
3 Réponses :
Selon le "Hadoop: le guide définitif" p>
Hadoop définit les paramètres de configuration de travail comme variables d'environnement pour les programmes de diffusion en continu. Cependant, il remplace le caractère non alphanumérique avec des sous-traitants pour s'assurer qu'ils sont des noms valides. L'expression Python suivante illustre comment vous pouvez récupérer la valeur de la propriété Mapred.job.Id à partir d'un script de streaming Python: P>
os.environ ["mapred_job_id"] p>
Vous pouvez également définir des variables d'environnement pour le processus de diffusion de flux lancé par MapReduce en appliquant l'option -cmdenv au programme de lancement en continu (une fois pour chaque variable que vous souhaitez définir). Par exemple, le suivant définit la variable de l'environnement MAGIC_PARAMETER: P>
-cmdenv magic_parameter = Abracadabra P>
On dirait que la propriété Krishnamutry a besoin est appelée "map.input.file" - qui apparaîtra probablement comme une variable d'environnement "map_input_file" pour diffuser du travail en continu.
Remarque: les périodes doivent être remplacées par des traits de soulignement
Le nouvel env_Variable pour Hadoop 2.x est mapreduce_map_input_file p>
Vous devez utiliser des minuscules 'Mapreduce_map_input_file'
En analysant le AVIS: mapReuce_map_input_file code> (nouveau) ou
map_input_file code> del> del> (déprécié) variable d'environnement, vous obtiendrez le nom du fichier de saisie de la carte. p>
Les deux variables d'environnement sont
map_input_file code> fonctionne pour hadoop 0.20.x pour toute personne coincée sur un ancien cluster