Journalisation des événements de l'application Spark dans Athena - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Journalisation des événements de l'application Spark dans Athena

L'éditeur de bloc-notes Athena permet la journalisation standard sur Jupyter, Spark et Python. Vous pouvez l'utiliser df.show() pour afficher PySpark DataFrame le contenu ou print("Output") pour afficher des valeurs dans la sortie de la cellule. Les sorties stdout, stderr et results de vos calculs sont écrites dans votre compartiment de résultats de requête dans Amazon S3.

Enregistrement des événements de l'application Spark sur Amazon CloudWatch

Vos sessions Athena peuvent également écrire des journaux sur Amazon sur CloudWatch le compte que vous utilisez.

Compréhension des flux de journaux et des groupes de journaux

CloudWatch organise l'activité des journaux en flux de journaux et en groupes de journaux.

Flux de journaux : un flux de CloudWatch journal est une séquence d'événements de journal qui partagent la même source. Chaque source distincte de CloudWatch journaux dans Logs constitue un flux de journaux distinct.

Groupes de CloudWatch journaux : dans Logs, un groupe de journaux est un groupe de flux de journaux qui partagent les mêmes paramètres de conservation, de surveillance et de contrôle d'accès.

Le nombre de flux de journaux pouvant appartenir à un groupe de journaux est illimité.

Dans Athena, lorsque vous démarrez une session de bloc-notes pour la première fois, Athena crée un groupe de journaux CloudWatch qui utilise le nom de votre groupe de travail compatible avec Spark, comme dans l'exemple suivant.

/aws-athena/workgroup-name

Ce groupe de journaux reçoit un flux de journaux pour chaque exécuteur de votre session qui produit au moins un événement du journal. L'exécuteur est la plus petite unité de calcul qu'une session de bloc-notes peut demander à Athena. Dans CloudWatch, le nom du flux de journal commence par l'ID de session et l'ID de l'exécuteur.

Pour plus d'informations sur les groupes de CloudWatch journaux et les flux de journaux, consultez la section Utilisation des groupes de journaux et des flux de CloudWatch journaux dans le guide de l'utilisateur Amazon Logs.

Utilisation d'objets de journalisation standard dans Athena pour Spark

Dans une session Athena for Spark, vous pouvez utiliser les deux objets de journalisation standard mondiaux suivants pour écrire des journaux sur Amazon : CloudWatch

  • athena_user_logger — Envoie les journaux uniquement à. CloudWatch Utilisez cet objet lorsque vous souhaitez enregistrer des informations directement dans lesquelles vos applications Spark sont CloudWatch enregistrées, comme dans l'exemple suivant.

    athena_user_logger.info("CloudWatch log line.")

    L'exemple écrit un événement de journal CloudWatch comme suit :

    AthenaForApacheSpark: 2022-01-01 12:00:00,000 INFO builtins: CloudWatch log line.
  • athena_shared_logger — Envoie le même journal à et à des fins d'assistance. CloudWatch AWS Vous pouvez utiliser cet objet pour partager des journaux avec les équipes de AWS service à des fins de résolution des problèmes, comme dans l'exemple suivant.

    athena_shared_logger.info("Customer debug line.") var = [...some variable holding customer data...] athena_shared_logger.info(var)

    L'exemple enregistre la debug ligne et la valeur de la var variable dans CloudWatch Logs et envoie une copie de chaque ligne à AWS Support.

    Note

    Pour des raisons de confidentialité, votre code de calcul et vos résultats ne sont pas partagés avec AWS. Veillez à ce que vos appels à athena_shared_logger n'écrivent que les informations que vous voulez rendre visibles à AWS Support.

Les enregistreurs fournis écrivent des événements via Apache Log4j et héritent les niveaux de journalisation de cette interface. Les valeurs de niveau de journalisation possibles sont DEBUG, ERROR, FATAL, INFO, WARN et WARNING. Vous pouvez utiliser la fonction nommée correspondante sur l'enregistreur pour produire ces valeurs.

Note

Ne reliez pas les noms athena_user_logger ou athena_shared_logger. Cela empêche les objets de journalisation d'écrire CloudWatch pendant le reste de la session.

Exemple : enregistrement des événements du bloc-notes dans CloudWatch

La procédure suivante explique comment enregistrer les événements du bloc-notes Athena dans Amazon CloudWatch Logs.

Pour enregistrer les événements du bloc-notes Athena dans Amazon Logs CloudWatch
  1. Suivez Démarrage avec Apache Spark sur Amazon Athena pour créer un groupe de travail compatible avec Spark dans Athena avec un nom unique. Ce tutoriel utilise le nom de groupe de travail athena-spark-example.

  2. Suivez les étapes de Création de votre propre bloc-notes pour créer un bloc-notes et lancer une nouvelle session.

  3. Dans l'éditeur de bloc-notes Athena, dans une nouvelle cellule de bloc-notes, saisissez la commande suivante :

    athena_user_logger.info("Hello world.")
  4. Exécuter la cellule.

  5. Récupérez l'ID de la session actuelle en effectuant l'une des opérations suivantes :

    • Affichez la sortie de la cellule (par exemple, ... session=72c24e73-2c24-8b22-14bd-443bdcd72de4).

    • Dans une nouvelle cellule, exécutez la commande magique %session_id.

  6. Enregistrer l'ID de la session.

  7. Avec le même Compte AWS que celui que vous utilisez pour exécuter la session du bloc-notes, ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  8. Dans le volet de navigation de la CloudWatch console, sélectionnez Log groups.

  9. Dans la liste des groupes de journaux, choisissez le groupe de journaux qui porte le nom de votre groupe de travail Athena compatible avec Spark, comme dans l'exemple suivant.

    /aws-athena/athena-spark-example

    La section Log streams (Flux de journaux) contient une liste d'un ou plusieurs liens de flux de journaux pour le groupe de travail. Le nom de chaque flux de journaux contient l'ID de la session, l'ID de l'exécuteur et l'UUID unique, séparés par des barres obliques.

    Par exemple, si l'ID de la session est 5ac22d11-9fd8-ded7-6542-0412133d3177 et l'ID de l'exécuteur est f8c22d11-9fd8-ab13-8aba-c4100bfba7e2, le nom du flux de journaux ressemble à l'exemple suivant.

    5ac22d11-9fd8-ded7-6542-0412133d3177/f8c22d11-9fd8-ab13-8aba-c4100bfba7e2/f012d7cb-cefd-40b1-90b9-67358f003d0b
  10. Choisissez le lien du flux de journaux pour votre session.

  11. Sur la page Log events (Événements du journal), consultez la colonne Message.

    L'événement du journal pour la cellule que vous avez exécutée ressemble à ce qui suit :

    AthenaForApacheSpark: 2022-01-01 12:00:00,000 INFO builtins: Hello world.
  12. Retournez à l'éditeur de blocs-notes Athena.

  13. Dans une nouvelle cellule, saisissez le code suivant. Le code enregistre une variable pour CloudWatch :

    x = 6 athena_user_logger.warn(x)
  14. Exécuter la cellule.

  15. Retournez à la page des événements du journal de la CloudWatch console pour le même flux de journal.

  16. Le flux de journaux contient maintenant une entrée d'événement du journal avec un message comme le suivant :

    AthenaForApacheSpark: 2022-01-01 12:00:00,000 WARN builtins: 6