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:
Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.
Wählen Sie einen Job aus.
Klicken Sie im unteren Bereich auf keyboard_capslock, um das Logfeld zu maximieren.
Klicken Sie auf den Tab Stichprobenerhebung.
Wählen Sie im Feld Schritt einen Pipelineschritt aus. Sie können auch einen Schritt in der Jobgrafik auswählen.
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.
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:
Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.
Wählen Sie einen Job aus.
Klicken Sie zum Maximieren des Bereichs Logs im Bereich Logs auf keyboard_capslock Feld ein-/ausblenden.
Klicken Sie auf den Tab Stichprobenerhebung.
Wählen Sie im Feld Schritt einen Pipelineschritt aus. Sie können auch einen Schritt in der Jobgrafik auswählen.
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.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.
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:
- Verwenden Sie einen vom Kunden verwalteten Verschlüsselungsschlüssel (Customer-Managed Encryption Key, CMEK), um den Cloud Storage-Bucket zu verschlüsseln. Weitere Informationen zur Auswahl einer Verschlüsselungsoption finden Sie unter Richtige Verschlüsselung für Ihre Anforderungen auswählen.
- Legen Sie eine Gültigkeitsdauer (Time to Live, TTL) für den Cloud Storage-Bucket fest, damit Datendateien nach einem bestimmten Zeitraum automatisch gelöscht werden. Weitere Informationen finden Sie unter Lebenszykluskonfiguration für einen Bucket festlegen.
- Beachten Sie beim Zuweisen von IAM-Berechtigungen zum Cloud Storage-Bucket das Prinzip der geringsten Berechtigung.
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:
- Achten Sie darauf, dass die Stichprobenerhebung aktiviert ist. Legen Sie dazu die Option
enable_data_sampling
fest. Weitere Informationen finden Sie unter Stichprobenerhebung aktivieren. - Achten Sie darauf, dass Sie Runner v2 verwenden.
- Überprüfen Sie, ob die Worker gestartet wurden. Die Stichprobenerhebung beginnt erst, wenn die Worker gestartet werden.
- Stellen Sie sicher, dass sich der Job und die Worker in einem fehlerfreien Zustand befinden.
- Prüfen Sie die Cloud Storage-Kontingente des Projekts. Wenn Sie Ihre Cloud Storage-Kontingentlimits überschreiten, kann Dataflow die Beispieldaten nicht schreiben.
- Bei der Stichprobenerhebung können keine Stichproben aus iterierbaren Elementen abgerufen werden. Beispiele aus diesen Streamtypen sind nicht verfügbar.