Registro de eventos de aplicaciones de Spark en Athena
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
Sus sesiones de Athena también pueden introducir registros en Amazon CloudWatch en la cuenta que esté utilizando.
Descripción de los flujos de registro y los grupos de registros
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 en la guía del usuario de Registros de Amazon CloudWatch.
Uso de objetos de registro estándar en Athena para Spark
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_user_logger: 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_shared_logger: 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 variablevar
en Registros de CloudWatch y envía una copia de cada línea a AWS Support.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 AWS Support.
Los registradores proporcionados escriben eventos a través de Apache Log4jDEBUG
, 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.
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
-
Siga Introducción a Apache Spark en Amazon Athena 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
. -
Siga los pasos que se indican en Paso 7: crear su propio cuaderno para crear un cuaderno e iniciar una nueva sesión.
-
En el editor de cuadernos de Athena, en una nueva celda de cuaderno, introduzca el siguiente comando:
athena_user_logger.info("Hello world.")
-
Ejecute la celda.
-
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
%session_id
.
-
-
Guarde el ID de sesión.
-
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/
. -
En el panel de navegación de la consola de CloudWatch, elija Log groups (Grupos de registro).
-
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 esf8c22d11-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
-
Elija el enlace de flujo de registro de su sesión.
-
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.
-
Vuelva al editor de cuadernos de Athena.
-
En una celda nueva, introduzca el siguiente código. El código registra una variable en CloudWatch:
x = 6 athena_user_logger.warn(x)
-
Ejecute la celda.
-
Vuelva a la página Log events (Eventos de registro) de la consola de CloudWatch para ver el mismo flujo de registro.
-
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