Je suis en train d'exécuter un travail Spark très simple sur AWS EMR et ne semble pas obtenir de sortie de journal de mon script.AWS EMR Enregistrement Spark Python
J'ai essayé avec l'impression à stderr:
from pyspark import SparkContext
import sys
if __name__ == '__main__':
sc = SparkContext(appName="HelloWorld")
print('Hello, world!', file=sys.stderr)
sc.stop()
Et en utilisant l'enregistreur d'allumage comme indiqué here:
from pyspark import SparkContext
if __name__ == '__main__':
sc = SparkContext(appName="HelloWorld")
log4jLogger = sc._jvm.org.apache.log4j
logger = log4jLogger.LogManager.getLogger(__name__)
logger.error('Hello, world!')
sc.stop()
DME me donne deux fichiers journaux après l'exécution du travail: controller
et stderr
. Aucun journal contient la chaîne "Hello, world!"
. C'est ma compréhension du stdout
est redirigé vers stderr
en étincelle. Le journal stderr
indique que le travail a été accepté, exécuté et terminé avec succès. Donc, ma question est, où puis-je voir la sortie du journal de mon script? Ou que devrais-je changer dans mon script pour me connecter correctement?
Edit: J'ai utilisé cette commande pour soumettre l'étape:
aws emr add-steps --region us-west-2 --cluster-id x-XXXXXXXXXXXXX --steps Type=spark,Name=HelloWorld,Args=[--deploy-mode,cluster,--master,yarn,--conf,spark.yarn.submit.waitAppCompletion=true,s3a://path/to/simplejob.py],ActionOnFailure=CONTINUE
Avec quels paramètres avez-vous soumis le travail à EMR? – user3154952
J'ai trouvé que la journalisation pour des étapes particulières ne se termine presque jamais dans les journaux de contrôleur ou de stderr que la console EMR tire à côté de la marche. Habituellement, je trouve ce que je veux dans les journaux de conteneur du travail (et généralement dans stdout). Ils sont généralement à un chemin comme 's3: // mybucket/logs/emr/étincelle/j-XXXXXX/conteneurs/application_XXXXXXXXX/container_XXXXXXX/...' –
@GregReda J'ai trouvé les journaux là-bas. Je vous remercie! Si vous postez comme réponse, je l'accepterai. – jarbaugh