Pipelinedaten mit Stichprobenerhebung beobachten

Mit der Stichprobenerhebung können Sie die Daten bei jedem Schritt einer Dataflow-Pipeline beobachten. Diese Informationen können Ihnen bei der Fehlerbehebung in Ihrer Pipeline helfen, da Sie die tatsächlichen Ein- und Ausgaben in einem laufenden oder abgeschlossenen Job anzeigen.

Anwendungsmöglichkeiten für die Stichprobenerhebung:

  • Bei der Entwicklung sehen Sie, welche Elemente in der Pipeline erzeugt werden.

  • Wenn eine Pipeline eine Ausnahme auslöst, rufen Sie die Elemente auf, die mit dieser Ausnahme verbunden sind.

  • Prüfen Sie beim Debugging die Ausgaben der Transformationen, damit die Ausgabe korrekt ist.

  • Informieren Sie sich über das Verhalten einer Pipeline, ohne den Code der Pipeline untersuchen zu müssen.

  • Sehen Sie sich die Stichprobenelemente später nach dem Job an oder vergleichen Sie die Stichprobendaten mit einer vorherigen Ausführung.

Übersicht

Dataflow kann Pipelinedaten auf folgende Arten erfassen:

  • Regelmäßige Stichprobenerhebung. Bei dieser Art der Stichprobenerhebung erfasst Dataflow Stichproben während der Jobausführung. Anhand der Stichprobendaten können Sie prüfen, ob Ihre Pipeline Elemente wie erwartet verarbeitet, und Laufzeitprobleme wie Hotkeys oder falsche Ausgaben diagnostizieren. Weitere Informationen finden Sie in diesem Dokument unter Regelmäßige Stichprobenerhebung verwenden.

  • Stichprobenerhebung bei Ausnahmen. Bei dieser Art der Stichprobenerhebung erfasst Dataflow Stichproben, wenn eine Pipeline eine Ausnahme auslöst. Sie können die Stichproben verwenden, um die Daten zu sehen, die beim Auftreten der Ausnahme verarbeitet wurden. Die Stichprobenerhebung bei Ausnahmen ist standardmäßig aktiviert und kann deaktiviert werden. Weitere Informationen finden Sie in diesem Dokument unter Stichprobenerhebung bei Ausnahmen verwenden.

Dataflow schreibt die Stichprobenelemente in den Cloud Storage-Pfad, der durch die Pipelineoption temp_location angegeben wird. Sie können die Stichprobendaten in der Google Cloud Console aufrufen oder die Rohdatendateien in Cloud Storage untersuchen. Die Dateien bleiben in Cloud Storage, bis Sie sie löschen.

Die Stichprobenerhebung wird von den Dataflow-Workern ausgeführt. Die Stichprobenerhebung wird als Best-Effort-Prinzip genutzt. Beispiele können verworfen werden, wenn vorübergehende Fehler auftreten.

Voraussetzungen

Sie müssen Runner v2 aktivieren, um die Stichprobenerhebung verwenden zu können. Weitere Informationen finden Sie unter Dataflow Runner v2 aktivieren.

Zum Anzeigen der Stichprobendaten in der Google Cloud Console benötigen Sie die folgenden IAM-Berechtigungen (Identity and Access Management):

  • storage.buckets.get
  • storage.objects.get
  • storage.objects.list

Für die periodische Stichprobenerhebung ist das folgende Apache Beam SDK erforderlich:

  • Apache Beam Java SDK 2.47.0 und höher
  • Apache Beam Python SDK 2.46.0 und höher
  • Apache Beam Go SDK 2.53.0 und höher

Für die Stichprobenerhebung bei Ausnahmen ist das folgende Apache Beam SDK erforderlich:

  • Apache Beam Java SDK 2.51.0 und höher
  • Apache Beam Python SDK 2.51.0 und höher
  • Das Apache Beam Go SDK unterstützt keine Stichprobenerhebung bei Ausnahmen.

Ab diesen SDKs aktiviert Dataflow standardmäßig Stichprobenerhebung bei Ausnahmen für alle Jobs.

Regelmäßige Stichprobenerhebung verwenden

In diesem Abschnitt wird beschrieben, wie Sie während der Jobausführung kontinuierlich Pipelinedaten erfassen.

Regelmäßige Stichprobenerhebung aktivieren

Regelmäßige Stichprobenerhebung ist standardmäßig deaktiviert. Legen Sie zum Aktivieren die folgende Pipelineoption fest:

Java

--experiments=enable_data_sampling

Python

--experiments=enable_data_sampling

Go

--experiments=enable_data_sampling

Sie können die Option programmatisch oder über die Befehlszeile festlegen. Weitere Informationen finden Sie unter Experimentelle Dataflow-Pipelineoptionen festlegen.

Verwenden Sie beim Ausführen einer Dataflow-Vorlage das Flag additional-experiments, um die Stichprobenerhebung zu aktivieren:

--additional-experiments=enable_data_sampling

Wenn die regelmäßige Stichprobenerhebung aktiviert ist, erfasst Dataflow Stichproben aus jedem PCollection im Jobdiagramm. Die Abtastrate beträgt etwa eine Stichprobe alle 30 Sekunden.

Je nach Datenmenge kann die regelmäßige Stichprobenerhebung zu einem erheblichen Leistungsaufwand führen. Daher empfehlen wir, regelmäßige Stichprobenerhebungen nur während der Tests zu aktivieren und für Produktionsarbeitslasten zu deaktivieren.

Stichprobendaten ansehen

Führen Sie die folgenden Schritte aus, um die Stichprobendaten in der Google Cloud Console aufzurufen:

  1. Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.

    ZU JOBS

  2. Wählen Sie einen Job aus.

  3. Klicken Sie im unteren Bereich auf , um das Logfeld zu maximieren.

  4. Klicken Sie auf den Tab Stichprobenerhebung.

  5. Wählen Sie im Feld Schritt einen Pipelineschritt aus. Sie können auch einen Schritt in der Jobgrafik auswählen.

  6. Wählen Sie im Feld Sammlung eine PCollection aus.

Wenn Dataflow Stichproben für diese PCollection sammelt, werden die Stichprobendaten auf dem Tab angezeigt. Auf jedem Tab werden das Erstellungsdatum und das Ausgabeelement für jedes Beispiel angezeigt. Das Ausgabeelement ist eine serialisierte Darstellung des Sammlungselements, einschließlich der Elementdaten, des Zeitstempels sowie der Fenster- und Fensterinformationen.

Die folgenden Beispiele zeigen Stichprobenelemente.

Java

TimestampedValueInGlobalWindow{value=KV{way, [21]},
timestamp=294247-01-09T04:00:54.775Z, pane=PaneInfo{isFirst=true, isLast=true,
timing=ON_TIME, index=0, onTimeIndex=0}}

Python

(('THE', 1), MIN_TIMESTAMP, (GloblWindow,), PaneInfo(first: True, last: True,
timing: UNKNOWN, index: 0, nonspeculative_index: 0))

Go

KV<THE,1> [@1708122738999:[[*]]:{3 true true 0 0}]

Die folgende Abbildung zeigt, wie die Stichprobendaten in der Google Cloud Console angezeigt werden.

Stichprobendaten in der Google Cloud Console

Stichprobenerhebung für Ausnahmen verwenden

Wenn Ihre Pipeline eine unbehandelte Ausnahme auslöst, können Sie sowohl die Ausnahme als auch das Eingabeelement aufrufen, das mit dieser Ausnahme verbunden ist. Die Stichprobenerhebung bei Ausnahmen ist standardmäßig aktiviert, wenn Sie ein unterstütztes Apache Beam SDK verwenden.

Ausnahmen ansehen

Führen Sie die folgenden Schritte aus, um eine Ausnahme aufzurufen:

  1. Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.

    ZU JOBS

  2. Wählen Sie einen Job aus.

  3. Klicken Sie zum Maximieren des Bereichs Logs im Bereich Logs auf Feld ein-/ausblenden.

  4. Klicken Sie auf den Tab Stichprobenerhebung.

  5. Wählen Sie im Feld Schritt einen Pipelineschritt aus. Sie können auch einen Schritt in der Jobgrafik auswählen.

  6. Wählen Sie im Feld Sammlung eine PCollection aus.

    Die Spalte Ausnahme enthält die Details zur Ausnahme. Für eine Ausnahme gibt es kein Ausgabeelement. Stattdessen enthält die Spalte Ausgabeelement die Nachricht Failed to process input element: INPUT_ELEMENT, wobei INPUT_ELEMENT das verbundene Eingabeelement ist.

  7. Klicken Sie auf In neuem Fenster öffnen, um das Eingabebeispiel und die Ausnahmedetails in einem neuen Fenster anzusehen.

Die folgende Abbildung zeigt, wie eine Ausnahme in der Google Cloud Console angezeigt wird.

Stichprobenausgabe in der Google Cloud Console

Stichprobenerhebung bei Ausnahmen deaktivieren

Wenn Sie die Stichprobenerhebung bei Ausnahmen deaktivieren möchten, legen Sie die folgende Pipelineoption fest:

Java

--experiments=disable_always_on_exception_sampling

Python

--experiments=disable_always_on_exception_sampling

Sie können die Option programmatisch oder über die Befehlszeile festlegen. Weitere Informationen finden Sie unter Experimentelle Dataflow-Pipelineoptionen festlegen.

Verwenden Sie beim Ausführen einer Dataflow-Vorlage das Flag additional-experiments, um die Stichprobenerhebung bei Ausnahmen zu deaktivieren:

--additional-experiments=disable_always_on_exception_sampling

Sicherheitsaspekte

Dataflow schreibt die Stichprobendaten in einen Cloud Storage-Bucket, den Sie erstellen und verwalten. Verwenden Sie die Sicherheitsfunktionen von Cloud Storage, um Ihre Daten zu schützen. Berücksichtigen Sie insbesondere die folgenden zusätzlichen Sicherheitsmaßnahmen:

Sie können auch einzelne Felder in Ihrem Datentyp PCollection verschleiern, sodass der Rohwert nicht in den Stichprobendaten enthalten ist:

  • Python: Überschreibt die Methode __repr__ oder __str__.
  • Java: Überschreibt die Methode toString.

Sie können jedoch die Ein- und Ausgaben von E/A-Connectors nicht verschleiern, es sei denn, Sie ändern den Quellcode des Connectors.

Abrechnung

Wenn Dataflow Stichprobenerhebung ausführt, wird Ihnen der Cloud Storage-Datenspeicher und die Lese- und Schreibvorgänge in Cloud Storage in Rechnung gestellt. Weitere Informationen finden Sie unter Cloud Storage – Preise.

Jeder Dataflow-Worker schreibt Stichproben in Batches. Dabei wird pro Batch ein Lese- und ein Schreibvorgang ausgeführt.

Fehlerbehebung

Dieser Abschnitt enthält Informationen zu häufigen Problemen bei der Verwendung der Stichprobenerhebung.

Berechtigungsfehler

Wenn Sie nicht berechtigt sind, die Beispiele aufzurufen, zeigt die Google Cloud Console den folgenden Fehler an:

You don't have permission to view a data sample.

Prüfen Sie, ob Sie die erforderlichen IAM-Berechtigungen haben, um diesen Fehler zu beheben. Wenn der Fehler weiterhin auftritt, unterliegen Sie möglicherweise einer IAM-Ablehnungsrichtlinie.

Ich sehe keine Beispiele

Wenn Sie keine Daten sehen, prüfen Sie Folgendes:

  1. Achten Sie darauf, dass die Stichprobenerhebung aktiviert ist. Legen Sie dazu die Option enable_data_sampling fest. Weitere Informationen finden Sie unter Stichprobenerhebung aktivieren.
  2. Achten Sie darauf, dass Sie Runner v2 verwenden.
  3. Überprüfen Sie, ob die Worker gestartet wurden. Die Stichprobenerhebung beginnt erst, wenn die Worker gestartet werden.
  4. Stellen Sie sicher, dass sich der Job und die Worker in einem fehlerfreien Zustand befinden.
  5. Prüfen Sie die Cloud Storage-Kontingente des Projekts. Wenn Sie Ihre Cloud Storage-Kontingentlimits überschreiten, kann Dataflow die Beispieldaten nicht schreiben.
  6. Bei der Stichprobenerhebung können keine Stichproben aus iterierbaren Elementen abgerufen werden. Beispiele aus diesen Streamtypen sind nicht verfügbar.

Nächste Schritte