

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
<a name="notebooks-spark-logging"></a>

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.

## Enregistrez les événements de l'application Spark sur Amazon CloudWatch
<a name="notebooks-spark-logging-logging-spark-application-events-to-amazon-cloudwatch"></a>

Vos sessions Athena peuvent également écrire des journaux sur [Amazon sur CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) le compte que vous utilisez.

### Présentation des flux de journaux et des groupes de journaux
<a name="notebooks-spark-logging-understanding-log-streams-and-log-groups"></a>

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](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html) de CloudWatch journaux dans le guide de l'utilisateur Amazon Logs.

### Utilisation d’objets de journalisation standard dans Athena pour Spark
<a name="notebooks-spark-logging-using-standard-logger-objects-in-athena-for-spark"></a>

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 à 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 à Support.

Les enregistreurs fournis écrivent des événements via [Apache Log4j](https://logging.apache.org/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 : consigner les événements du bloc-notes dans CloudWatch
<a name="notebooks-spark-logging-example-logging-notebook-events-to-cloudwatch"></a>

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 [Prise en main d’Apache Spark dans Amazon Athena](notebooks-spark-getting-started.md) 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`.

1. Suivez les étapes de [Étape 7 : Création de votre propre bloc-notes](notebooks-spark-getting-started.md#notebooks-spark-getting-started-creating-your-own-notebook) pour créer un bloc-notes et lancer une nouvelle session.

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

   ```
   athena_user_logger.info("Hello world.")         
   ```

1. Exécuter la cellule.

1. 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](notebooks-spark-magics.md) `%session_id`.

1. Enregistrer l'ID de la session.

1. 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/](https://console.aws.amazon.com/cloudwatch/).

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

1. 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
   ```

1. Choisissez le lien du flux de journaux pour votre session.

1. 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.
   ```

1. Retournez à l'éditeur de blocs-notes Athena.

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

   ```
   x = 6
   athena_user_logger.warn(x)
   ```

1. Exécuter la cellule.

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

1. 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
   ```