Lesen von strukturierten Streamingzustandsinformationen
Wichtig
Dieses Feature befindet sich in der Public Preview.
In Databricks Runtime 14.3 LTS und höher können Sie DataFrame-Vorgänge oder SQL-Tabellenwertfunktionen verwenden, um Zustandsdaten und Metadaten für strukturierte Streams abzufragen. Sie können diese Funktionen verwenden, um Statusinformationen für Zustandsabfragen strukturierter Streams zu beobachten, die für die Überwachung und das Debuggen nützlich sein können.
Sie benötigen Lesezugriff auf den Prüfpunktpfad für eine Streamingabfrage, um Zustandsdaten oder Metadaten abzufragen. Die in diesem Artikel beschriebenen Funktionen bieten schreibgeschützten Zugriff auf Zustandsdaten und Metadaten. Sie können nur die Batchlesesemantik zum Abfragen von Zustandsinformationen verwenden.
Hinweis
Sie können keine Zustandsinformationen für Delta Live Tables-Pipelines, Streamingtabellen oder materialisierte Ansichten abfragen.
Lesen von strukturiertem Streamingzustandsspeicher
Sie können Zustandsspeicherinformationen für strukturierte Streaming-Abfragen lesen, die in unterstützten Databricks Runtime ausgeführt werden. Verwenden Sie die folgende Syntax:
Python
df = (spark.read
.format("statestore")
.load("/checkpoint/path"))
SQL
SELECT * FROM read_statestore('/checkpoint/path')
Die folgenden optionalen Konfigurationen werden unterstützt:
Option | Typ | Standardwert | Beschreibung |
---|---|---|---|
batchId |
Long | aktuellste Batch ID | Stellt den Zielbatch dar, aus dem gelesen werden soll. Geben Sie diese Option an, um Statusinformationen für einen früheren Status der Abfrage abzufragen. Der Batch sollte committet, aber noch nicht bereinigt werden. |
operatorId |
Long | 0 | Stellt den Zieloperator dar, aus dem gelesen werden soll. Diese Option wird verwendet, wenn die Abfrage mehrere zustandsbehaftete Operatoren verwendet. |
storeName |
String | "STANDARD" | Stellt den Namen des Ziel-Zustandsspeichers dar, aus dem gelesen werden soll. Diese Option wird verwendet, wenn der zustandsbehaftete Operator mehrere Zustandsspeicherinstanzen verwendet. Für einen Stream-Steam-Join muss entweder storeName oder joinSide angegeben werden, aber nicht beide. |
joinSide |
String („links“ oder „rechts“) | Stellt die Zielseite dar, aus der gelesen werden soll. Diese Option wird verwendet, wenn Benutzer*innen den Status aus der Stream-Stream-Verknüpfung lesen möchten. |
Die zurückgegebenen Daten haben das folgende Schema:
Spalte | Type | Beschreibung |
---|---|---|
key |
Struct (weiterer Typ, der vom Zustandsschlüssel abgeleitet wurde) | Der Schlüssel für einen zustandsbehafteten Operatordatensatz im Zustandsprüfpunkt. |
value |
Struct (weiterer Typ, der vom Zustandswert abgeleitet wurde) | Der Wert für einen zustandsbehafteten Operatordatensatz im Zustandsprüfpunkt. |
partition_id |
Integer | Die Partition des Zustandsprüfpunkts, die den Datensatz des zustandsbehafteten Operators enthält. |
Lesen von strukturierten Streamingzustandsmetadaten
Wichtig
Sie müssen Streamingabfragen auf Databricks Runtime 14.2 oder höher ausführen, um Zustandsmetadaten aufzuzeichnen. Zustandsmetadatendateien unterbrechen die Abwärtskompatibilität nicht. Wenn Sie eine Streamingabfrage auf Databricks Runtime 14.1 oder niedriger ausführen, werden vorhandene Zustandsmetadatendateien ignoriert und es werden keine neuen Zustandsmetadatendateien geschrieben.
Sie können Zustandsmetadateninformationen für strukturierte Streamingabfragen lesen, die auf Databricks Runtime 14.2 oder höher ausgeführt werden. Verwenden Sie die folgende Syntax:
Python
df = (spark.read
.format("state-metadata")
.load("<checkpointLocation>"))
SQL
SELECT * FROM read_state_metadata('/checkpoint/path')
Die zurückgegebenen Daten haben das folgende Schema:
Spalte | Type | Beschreibung |
---|---|---|
operatorId |
Integer | Die ganzzahlige ID des zustandsbehafteten Streamingoperators. |
operatorName |
Integer | Name des zustandsbehafteten Streamingoperators. |
stateStoreName |
String | Name des Zustandsspeichers des Operators. |
numPartitions |
Integer | Anzahl der Partitionen des Zustandsspeichers. |
minBatchId |
Long | Die niedrigste Batch-ID, die für den Abfragezustand verfügbar ist. |
maxBatchId |
Long | Die höchste Batch-ID, die für den Abfragezustand verfügbar ist. |
Hinweis
Die von minBatchId
und maxBatchId
bereitgestellten Batch-ID-Werte spiegeln den Zustand zum Zeitpunkt wider, zu dem der Prüfpunkt erstellt wurde. Alte Batches werden bei der Ausführung von Mikrobatches automatisch bereinigt, so dass nicht garantiert werden kann, dass der hier angegebene Wert noch verfügbar ist.