Spark-Anwendungsereignisse in Athena protokollieren - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Spark-Anwendungsereignisse in Athena protokollieren

Der Athena-Notebook-Editor ermöglicht die Standardprotokollierung von Jupyter, Spark und Python. Sie können df.show() sie zur Anzeige von PySpark DataFrame Inhalten oder print("Output") zur Anzeige von Werten in der Zellenausgabe verwenden. Die stdout-, stderr-, und results-Ausgaben für Ihre Berechnungen werden in den Bucket-Speicherort Ihrer Abfrageergebnisse in Amazon S3 geschrieben.

Spark-Anwendungsereignisse bei Amazon protokollieren CloudWatch

Ihre Athena-Sitzungen können auch Protokolle für das Konto, das Sie verwenden, an Amazon CloudWatch schreiben.

Verstehen Sie Log-Streams und Log-Gruppen

CloudWatch organisiert die Protokollaktivitäten in Protokollstreams und Protokollgruppen.

Protokollstreams — Ein CloudWatch Protokollstream ist eine Folge von Protokollereignissen, die dieselbe Quelle haben. Jede einzelne Protokollquelle in CloudWatch Logs bildet einen separaten Protokollstream.

Protokollgruppen — In CloudWatch Logs ist eine Protokollgruppe eine Gruppe von Protokollstreams, die dieselben Einstellungen für Aufbewahrung, Überwachung und Zugriffskontrolle verwenden.

Es gibt keine Begrenzung dazu, wie viele Protokollstreams zu einer Protokollgruppe gehören können.

Wenn Sie in Athena zum ersten Mal eine Notebook-Sitzung starten, erstellt Athena eine Protokollgruppe, die den Namen Ihrer Spark-fähigen Arbeitsgruppe verwendet, wie im CloudWatch folgenden Beispiel.

/aws-athena/workgroup-name

Diese Protokollgruppe erhält einen Protokollstream für jeden Executor in Ihrer Sitzung, der mindestens ein Protokollereignis erzeugt. Ein Executor ist die kleinste Recheneinheit, die eine Notebook-Sitzung von Athena anfragen kann. In CloudWatch beginnt der Name des Protokollstreams mit der Sitzungs-ID und der Executor-ID.

Weitere Informationen zu CloudWatch Protokollgruppen und Log-Streams finden Sie unter Working with log groups and log streams im Amazon CloudWatch Logs-Benutzerhandbuch.

Verwenden Sie Standard-Logger-Objekte in Athena for Spark

In einer Athena for Spark-Sitzung können Sie die folgenden zwei globalen Standard-Logger-Objekte verwenden, um Logs in Amazon CloudWatch zu schreiben:

  • athena_user_logger — Sendet Protokolle nur an. CloudWatch Verwenden Sie dieses Objekt, wenn Sie Informationen direkt in Ihre Spark-Anwendungen protokollieren möchten CloudWatch, wie im folgenden Beispiel.

    athena_user_logger.info("CloudWatch log line.")

    Im Beispiel wird ein Protokollereignis CloudWatch wie folgt geschrieben:

    AthenaForApacheSpark: 2022-01-01 12:00:00,000 INFO builtins: CloudWatch log line.
  • athena_shared_logger — Sendet dasselbe Protokoll sowohl an als auch an CloudWatch AWS für Supportzwecke. Sie können dieses Objekt verwenden, um Logs mit anderen zu teilen AWS Serviceteams für die Problembehandlung, wie im folgenden Beispiel.

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

    Das Beispiel protokolliert die debug Zeile und den Wert der var Variablen in CloudWatch Logs und sendet eine Kopie jeder Zeile an AWS Support.

    Anmerkung

    Aus Datenschutzgründen werden Ihr Berechnungscode und Ihre Ergebnisse nicht an Dritte weitergegeben AWS. Achten Sie darauf, dass Sie in Ihre Anrufe nur die Informationen athena_shared_logger schreiben, für die Sie auch sichtbar sein möchten AWS Support.

Die bereitgestellten Protokollierer schreiben Ereignisse über Apache Log4j und erben die Protokollierungsebenen dieser Schnittstelle. Mögliche Werte für die Protokollebene sind DEBUG, ERROR, FATAL, INFO und WARN oder WARNING. Sie können die entsprechend benannte Funktion auf dem Protokollierer verwenden, um diese Werte zu erzeugen.

Anmerkung

Verknüpfen Sie die Namen athena_user_logger oder athena_shared_logger nicht neu. Dadurch können die Protokollierungsobjekte CloudWatch für den Rest der Sitzung nicht mehr in sie schreiben.

Das folgende Verfahren zeigt, wie Athena-Notebook-Ereignisse in Amazon CloudWatch Logs protokolliert werden.

Um Athena-Notebook-Ereignisse in Amazon CloudWatch Logs zu protokollieren
  1. Befolgen Sie Erste Schritte mit Apache Spark auf Amazon Athena, um eine Spark-fähige Arbeitsgruppe in Athena mit einem eindeutigen Namen zu erstellen. In diesem Tutorial wird der Arbeitsgruppenname athena-spark-example verwendet.

  2. Folgen Sie den Schritten unter Schritt 7: Erstellen Sie Ihr eigenes Notizbuch, um ein Notebook zu erstellen und eine neue Sitzung zu starten.

  3. Geben Sie im Athena-Notebook-Editor in einer neuen Notebook-Zelle den folgenden Befehl ein:

    athena_user_logger.info("Hello world.")
  4. Führen Sie die Zelle aus.

  5. Rufen Sie die aktuelle Sitzungs-ID ab, indem Sie eine der folgenden Aktionen ausführen:

    • Zeigen Sie die Zellenausgabe an (z. B .... session=72c24e73-2c24-8b22-14bd-443bdcd72de4).

    • Führen Sie in einer neuen Zelle den Magic-Befehl %session_id aus.

  6. Speichern Sie die Sitzungs-ID.

  7. Mit demselben AWS-Konto die Konsole, mit der Sie die Notebook-Sitzung ausführen, öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  8. Wählen Sie im Navigationsbereich der CloudWatch Konsole die Option Protokollgruppen aus.

  9. Wählen Sie in der Liste von Protokollgruppen die Protokollgruppe aus, die den Namen Ihrer Spark-fähigen Athena-Arbeitsgruppe trägt, wie im folgenden Beispiel gezeigt.

    /aws-athena/athena-spark-example

    Der Abschnitt Protokollstreams enthält eine Liste mit einem oder mehreren Protokollstream-Links für die Arbeitsgruppe. Jeder Protokollstreamname enthält die Sitzungs-ID, die Executor-ID und ist eindeutig, UUID getrennt durch Schrägstriche.

    Wenn die Sitzungs-ID beispielsweise 5ac22d11-9fd8-ded7-6542-0412133d3177 und die Executor-ID f8c22d11-9fd8-ab13-8aba-c4100bfba7e2 lautet, ähnelt der Name des Protokollstreams dem folgenden Beispiel.

    5ac22d11-9fd8-ded7-6542-0412133d3177/f8c22d11-9fd8-ab13-8aba-c4100bfba7e2/f012d7cb-cefd-40b1-90b9-67358f003d0b
  10. Wählen Sie den Protokollstream-Link für Ihre Sitzung aus.

  11. Rufen Sie auf der Seite Log events (Protokollereignisse) die Spalte Message (Nachricht) auf.

    Das Protokollereignis für die Zelle, die Sie ausgeführt haben, sieht folgendermaßen aus:

    AthenaForApacheSpark: 2022-01-01 12:00:00,000 INFO builtins: Hello world.
  12. Kehren Sie zum Athena-Notebook-Editor zurück.

  13. Geben Sie in einer neuen Zelle den folgenden Code ein. Der Code protokolliert eine Variable an: CloudWatch

    x = 6 athena_user_logger.warn(x)
  14. Führen Sie die Zelle aus.

  15. Kehren Sie zur CloudWatch Konsolenseite „Ereignisse protokollieren“ für denselben Protokollstream zurück.

  16. Der Protokollstream enthält nun einen Eintrag für ein Protokollereignis mit einer Meldung wie der folgenden:

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