Vous commencez par créer le flux de travaux en continu par défaut (qui exécute l'exemple wordcount). À ce stade, vous utilisez l'ID du flux de travaux pour ajouter vos autres étapes. Dans mon exemple, le premier travail mapreduce stocke ses résultats dans un compartiment S3. Ce résultat devient alors l'entrée pour le deuxième travail. Si vous allez dans la console AWS, vous verrez ceux-ci sous l'onglet Steps.
Vous pouvez continuer à enchaîner des travaux de cette manière, car l'indicateur --alive s'assure que le cluster ne s'arrête pas tant que vous ne l'avez pas terminé manuellement. N'oubliez pas de le faire lorsque la dernière étape est terminée (le flux de travaux retournera à l'état WAITING), sinon vous serez facturé pour le temps d'inactivité.
$ elastic-mapreduce --create --alive --stream --num-instances=1 --master-instance-type=m1.small
Created job flow j-NXXXJARJARSXXX
$ elastic-mapreduce -j j-NXXXJARJARSXXX --stream \
--input s3n://mybucket.data/2011/01/01/* \
--output s3n://mybucket.joblog/step1done-2011-01-01 \
--mapper s3n://mybucket.code/map.rb \
--reducer s3n://mybucket.code/reduce.rb
Added jobflow steps
$ elastic-mapreduce -j j-NXXXJAJARSXXX --stream \
--input s3n://mybucket.joblog/step1done-2011-01-01/part-* \
--output s3n://mybucket.joblog/job-results \
--mapper s3n://mybucket.code/map.rb \
--reducer s3n://mybucket.code/reduce.rb
Added jobflow steps
La description de la question ne correspond pas exactement au titre. J'ai essayé de répondre à la question telle qu'elle est décrite. Peut-être que vous voulez développer la partie JSON? –