

# Registro de eventos de aplicaciones de Spark en Athena
<a name="notebooks-spark-logging"></a>

El editor de cuadernos Athena permite el registro estándar de Jupyter, Spark y Python. Puede usar `df.show()` para mostrar el contenido de PySpark DataFrame o `print("Output")` para mostrar valores en la salida de la celda. Las salidas `stdout`, `stderr` y `results` de los cálculos se escriben en la ubicación del bucket de resultados de la consulta en Amazon S3.

## Registro de eventos de aplicaciones de Spark en Amazon CloudWatch
<a name="notebooks-spark-logging-logging-spark-application-events-to-amazon-cloudwatch"></a>

Sus sesiones de Athena también pueden introducir registros en [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) en la cuenta que esté utilizando.

### Descripción de los flujos de registro y los grupos de registros
<a name="notebooks-spark-logging-understanding-log-streams-and-log-groups"></a>

CloudWatch organiza la actividad de registro en flujos de registro y grupos de registros.

**Flujos de registro**: un flujo de registro de CloudWatch es una secuencia de eventos de registro que comparten el mismo origen. Cada fuente independiente de registros en Registros de CloudWatch constituye un flujo de registros independiente.

**Grupos de registro**: en Registros de CloudWatch, un grupo de registros es un grupo de flujos de registro que comparten la misma configuración de retención, supervisión y control de acceso.

No hay límites en el número de flujos de registros que pueden pertenecer a un grupo de registros.

En Athena, cuando inicia una sesión de cuaderno por primera vez, Athena crea un grupo de registro en CloudWatch que utiliza el nombre de su grupo de trabajo habilitado para Spark, como en el siguiente ejemplo.

```
/aws-athena/workgroup-name
```

Este grupo de registro recibe un flujo de registro por cada ejecutor de su sesión que produzca al menos un evento de registro. Un ejecutor es la unidad de cálculo más pequeña que una sesión de cuaderno puede solicitar a Athena. En CloudWatch, el nombre del flujo de registro comienza con el ID de sesión y el ID de ejecutor.

Para obtener más información sobre los flujos de registro y los grupos de registro de CloudWatch, consulte [Trabajo con grupos de registro y flujos de registro](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html) en la guía del usuario de Registros de Amazon CloudWatch.

### Uso de objetos de registro estándar en Athena para Spark
<a name="notebooks-spark-logging-using-standard-logger-objects-in-athena-for-spark"></a>

En una sesión de Athena para Spark, puede utilizar los dos objetos de registro estándar globales siguientes para escribir registros en Amazon CloudWatch:
+ **athena\$1user\$1logger**: envía registros únicamente a CloudWatch. Utilice este objeto cuando desee registrar la información de sus aplicaciones de Spark directamente en CloudWatch, como en el siguiente ejemplo.

  ```
  athena_user_logger.info("CloudWatch log line.")
  ```

  El ejemplo escribe un evento de registro en CloudWatch como el siguiente:

  ```
  AthenaForApacheSpark: 2022-01-01 12:00:00,000 INFO builtins: CloudWatch log line.
  ```
+ **athena\$1shared\$1logger**: envía el mismo registro tanto a CloudWatch como a AWS para fines de soporte. Puede utilizar este objeto para compartir registros con los equipos de servicio de AWS a fin de solucionar problemas, como en el siguiente ejemplo.

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

  El ejemplo registra la línea `debug` y el valor de la variable `var` en Registros de CloudWatch y envía una copia de cada línea a Soporte.
**nota**  
Por motivos de privacidad, su código de cálculo y sus resultados no se comparten con AWS. Asegúrese de que sus llamadas a `athena_shared_logger` escriban solo la información para la que desea que sea visible Soporte.

Los registradores proporcionados escriben eventos a través de [Apache Log4j](https://logging.apache.org/log4j/) y heredan los niveles de registro de esta interfaz. Los valores posibles del nivel de registro son `DEBUG`, `ERROR`, `FATAL`, `INFO` y `WARN` o `WARNING`. Puede utilizar la función con nombre correspondiente en el registrador para generar estos valores.

**nota**  
No vuelva a unir los nombres `athena_user_logger` ni `athena_shared_logger`. Al hacerlo, los objetos de registro no podrán escribir en CloudWatch durante el resto de la sesión.

### Ejemplo: registro de eventos de cuadernos en CloudWatch
<a name="notebooks-spark-logging-example-logging-notebook-events-to-cloudwatch"></a>

El siguiente procedimiento muestra cómo registrar los eventos de cuaderno de Athena en Registros de Amazon CloudWatch.

**Para registrar los eventos de cuaderno de Athena en Registros de Amazon CloudWatch**

1. Siga [Introducción a Apache Spark en Amazon Athena](notebooks-spark-getting-started.md) para crear un grupo de trabajo compatible con Spark en Athena con un nombre único. Este tutorial utiliza el nombre del grupo de trabajo `athena-spark-example`.

1. Siga los pasos que se indican en [Paso 7: crear su propio cuaderno](notebooks-spark-getting-started.md#notebooks-spark-getting-started-creating-your-own-notebook) para crear un cuaderno e iniciar una nueva sesión.

1. En el editor de cuadernos de Athena, en una nueva celda de cuaderno, introduzca el siguiente comando:

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

1. Ejecute la celda.

1. Para recuperar el ID de sesión actual, realice una de las siguientes acciones:
   + Consulte la salida de la celda (por ejemplo, `... session=72c24e73-2c24-8b22-14bd-443bdcd72de4`).
   + En una celda nueva, ejecute el comando [mágico](notebooks-spark-magics.md) `%session_id`.

1. Guarde el ID de sesión.

1. Con la misma Cuenta de AWS que está utilizando para ejecutar la sesión del cuaderno, abra la consola de CloudWatch en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. En el panel de navegación de la consola de CloudWatch, elija **Log groups** (Grupos de registro).

1. En la lista de grupos de registro, seleccione el grupo de registro que tenga el nombre de su grupo de trabajo de Athena habilitado para Spark, como en el siguiente ejemplo.

   ```
   /aws-athena/athena-spark-example
   ```

   La sección **Log streams** (Flujos de registro) contiene una lista de uno o más enlaces de flujos de registro para el grupo de trabajo. Cada nombre de flujo de registro contiene el ID de sesión, el ID del ejecutor y el UUID único separados por caracteres de barra diagonal.

   Por ejemplo, si el ID de sesión es `5ac22d11-9fd8-ded7-6542-0412133d3177` y el ID del ejecutor es `f8c22d11-9fd8-ab13-8aba-c4100bfba7e2`, el nombre del flujo de registro se parece al siguiente ejemplo.

   ```
   5ac22d11-9fd8-ded7-6542-0412133d3177/f8c22d11-9fd8-ab13-8aba-c4100bfba7e2/f012d7cb-cefd-40b1-90b9-67358f003d0b
   ```

1. Elija el enlace de flujo de registro de su sesión.

1. En la página **Eventos de registro**, consulte la columna **Mensaje**.

   El evento de registro de la celda que ejecutó es similar al siguiente:

   ```
   AthenaForApacheSpark: 2022-01-01 12:00:00,000 INFO builtins: Hello world.
   ```

1. Vuelva al editor de cuadernos de Athena.

1. En una celda nueva, introduzca el siguiente código. El código registra una variable en CloudWatch:

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

1. Ejecute la celda.

1. Vuelva a la página **Log events** (Eventos de registro) de la consola de CloudWatch para ver el mismo flujo de registro.

1. El flujo de registro ahora contiene una entrada de eventos de registro con un mensaje como el siguiente:

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