web-dev-qa-db-fra.com

Comment écrire des messages dans le journal de sortie sur AWS Glue?

La sortie du journal des travaux AWS Glue et les erreurs dans deux journaux CloudWatch différents, /aws-glue/jobs/error Et /aws-glue/jobs/output Par défaut. Lorsque j'inclus des instructions print() dans mes scripts de débogage, elles sont écrites dans le journal des erreurs (/aws-glue/jobs/error).

J'ai essayé d'utiliser:

log4jLogger = sparkContext._jvm.org.Apache.log4j 
log = log4jLogger.LogManager.getLogger(__name__) 
log.warn("Hello World!")

mais "Hello World!" n'apparaît dans aucun des journaux du travail de test que j'ai exécuté.

Quelqu'un sait-il comment écrire des instructions de journal de débogage dans le journal de sortie (/aws-glue/jobs/output)?

TIA!

ÉDITER:

Il s'avère que ce qui précède fonctionne réellement. Ce qui se passait, c'est que j'exécutais le travail dans la fenêtre de l'éditeur de script AWS Glue qui capture les combinaisons de touches Command-F et recherche uniquement dans le script actuel. Donc, lorsque j'ai essayé de rechercher dans la page la sortie de journalisation, il semblait que ce n'était pas le cas.

REMARQUE: J'ai découvert en testant la suggestion du premier répondant que les scripts AWS Glue ne semblent pas générer de message de journal avec un niveau inférieur à WARN!

11
Jesse Clark

Essayez d'utiliser le journal intégré python du module logging, par défaut, il écrit des messages dans le flux de sortie standard.

import logging

MSG_FORMAT = '%(asctime)s %(levelname)s %(name)s: %(message)s'
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
logging.basicConfig(format=MSG_FORMAT, datefmt=DATETIME_FORMAT)
logger = logging.getLogger(<logger-name-here>)

logger.setLevel(logging.INFO)

...

logger.info("Test log message")
8
Alexey Bakulin

Je sais que l'article n'est pas nouveau, mais il pourrait peut-être être utile pour quelqu'un: Pour moi, la connexion à glue fonctionne avec les lignes de code suivantes:

# create glue context
glueContext = GlueContext(sc)
# set custom logging on
logger = glueContext.get_logger()
...
#write into the log file with:
logger.info("s3_key:" + your_value)
3
Lars