Spark-Anwendungsereignisse in Athena protokollieren
Der Athena-Notebook-Editor ermöglicht die Standardprotokollierung von Jupyter, Spark und Python. Sie können df.show() verwenden, um PySpark-DataFrame-Inhalte anzuzeigen, oder print("Output") verwenden, um Werte in der Zellausgabe anzuzeigen. Die stdout-, stderr-, und results-Ausgaben für Ihre Berechnungen werden in den Bucket-Speicherort Ihrer Abfrageergebnisse in Amazon S3 geschrieben.
Protokollieren von Spark-Anwendungsereignissen mit Amazon CloudWatch
Ihre Athena-Sitzungen können auch Protokolle für Amazon CloudWatch in dem von Ihnen verwendeten Konto aufzeichnen.
Grundlegendes zu Protokollstreams und Protokollgruppen
CloudWatch organisiert Protokollaktivitäten in Protokollstreams und Protokollgruppen.
Protokollstreams – Ein CloudWatch-Protokollstream ist eine Abfolge von Protokollereignissen, die dieselbe Quelle nutzen. Jede separate Quelle für Protokolle in CloudWatch Logs bildet einen separaten Protokollstream.
Protokollgruppen – In CloudWatch Logs ist eine Protokollgruppe eine Gruppe von Protokollstreams, die die gleichen Aufbewahrungs-, Überwachungs- und Zugriffssteuerungseinstellungen 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 in CloudWatch, die den Namen Ihrer Spark-fähigen Arbeitsgruppe verwendet, wie im 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 über CloudWatch-Protokollgruppen und Protokollstreams finden Sie unter Arbeiten mit Protokollgruppen und Protokollstreams im Benutzerhandbuch zu Amazon CloudWatch Logs.
Verwenden von Standard-Protokollierungsobjekten in Athena für Spark
In einer Athena-für-Spark-Sitzung können Sie die folgenden zwei globalen Standard-Protokollierungsobjekte verwenden, um Protokolle in Amazon CloudWatch zu schreiben:
-
athena_user_logger – Sendet Protokolle ausschließlich an CloudWatch. Verwenden Sie dieses Objekt, wenn Sie Informationen zu Ihren Spark-Anwendungen direkt in CloudWatch protokollieren möchten, wie im folgenden Beispiel.
athena_user_logger.info("CloudWatch log line.")Das Beispiel schreibt ein Protokollereignis wie das folgende in CloudWatch:
AthenaForApacheSpark: 2022-01-01 12:00:00,000 INFO builtins: CloudWatch log line. -
athena_shared_logger – Sendet das gleiche Protokoll sowohl an CloudWatch als auch an AWS für Unterstützungszwecke. Sie können dieses Objekt verwenden, um Protokolle zur Fehlerbehebung für AWS-Service-Teams freizugeben, 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 dervar-Variablen in CloudWatch Logs und sendet eine Kopie jeder Zeile an Support.Anmerkung
Aus Datenschutzgründen werden Ihr Berechnungscode und Ihre Ergebnisse nicht an AWS weitergegeben. Stellen Sie sicher, dass Ihre Aufrufe an
athena_shared_loggernur die Informationen schreiben, die Sie für Support sichtbar machen möchten.
Die bereitgestellten Protokollierer schreiben Ereignisse über Apache Log4jDEBUG, 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 für den Rest der Sitzung nicht mehr in CloudWatch schreiben.
Das folgende Verfahren zeigt, wie Sie Athena-Notebook-Ereignisse in Amazon CloudWatch Logs protokollieren.
So protokollieren Sie Athena-Notebook-Ereignisse in Amazon CloudWatch Logs
-
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-exampleverwendet. -
Folgen Sie den Schritten unter Schritt 7: Erstellen Sie ein eigenes Notebook, um ein Notebook zu erstellen und eine neue Sitzung zu starten.
-
Geben Sie im Athena-Notebook-Editor in einer neuen Notebook-Zelle den folgenden Befehl ein:
athena_user_logger.info("Hello world.") -
Führen Sie die Zelle aus.
-
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_idaus.
-
-
Speichern Sie die Sitzungs-ID.
-
Öffnen Sie mit der gleichen AWS-Konto, das Sie zum Ausführen der Notebook-Sitzung verwenden, die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/
. -
Wählen Sie im Navigationsbereich der CloudWatch-Konsole Protokollgruppen aus.
-
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-exampleDer Abschnitt Protokollstreams enthält eine Liste mit einem oder mehreren Protokollstream-Links für die Arbeitsgruppe. Jeder Protokollstream-Name enthält die Sitzungs-ID, die Executor-ID und die eindeutige UUID, getrennt durch Schrägstriche.
Wenn die Sitzungs-ID beispielsweise
5ac22d11-9fd8-ded7-6542-0412133d3177und die Executor-IDf8c22d11-9fd8-ab13-8aba-c4100bfba7e2lautet, ähnelt der Name des Protokollstreams dem folgenden Beispiel.5ac22d11-9fd8-ded7-6542-0412133d3177/f8c22d11-9fd8-ab13-8aba-c4100bfba7e2/f012d7cb-cefd-40b1-90b9-67358f003d0b -
Wählen Sie den Protokollstream-Link für Ihre Sitzung aus.
-
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. -
Kehren Sie zum Athena-Notebook-Editor zurück.
-
Geben Sie in einer neuen Zelle den folgenden Code ein. Der Code protokolliert eine Variable in CloudWatch:
x = 6 athena_user_logger.warn(x) -
Führen Sie die Zelle aus.
-
Kehren Sie zur Seite Log events (Protokollereignisse) der CloudWatch-Konsole für denselben Protokollstream zurück.
-
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