Freigeben über


Häufig gestellte Fragen zum Autoloader

Häufig gestellte Fragen zum Autoloader von Databricks.

Verarbeitet der Autoloader die Datei erneut, wenn sie angefügt oder überschrieben wird?

Dateien werden genau einmal verarbeitet, es sei denn, Sie aktivieren cloudFiles.allowOverwrites. Wenn eine Datei angefügt oder überschrieben wird, garantiert Azure Databricks nicht, welche Version der Datei verarbeitet wird. Sie sollten auch bei der Aktivierung von cloudFiles.allowOverwrites im Dateibenachrichtigungsmodus vorsichtig sein, in dem Autoloader neue Dateien sowohl über Dateibenachrichtigungen als auch durch Verzeichnisauflistung identifizieren kann. Aufgrund der Diskrepanz zwischen der Uhrzeit des Dateibenachrichtigungsereignisses und der Dateiänderungszeit erhält der Autoloader möglicherweise zwei verschiedene Zeitstempel und erfasst daher die gleiche Datei zweimal, auch wenn die Datei nur einmal geschrieben wird.

Databricks empfiehlt Ihnen, Autoloader zu verwenden, um nur unveränderliche Dateien zu erfassen und das Festlegen von cloudFiles.allowOverwrites zu umgehen. Wenden Sie sich an Ihr Azure Databricks-Kundenberatungsteam, wenn dies nicht Ihren Anforderungen entspricht.

Wenn meine Dateien nicht fortlaufend, sondern in regelmäßigen Abständen (z. B. einmal täglich) eintreffen, sollte ich diese Quelle dann trotzdem nutzen und ergeben sich daraus Vorteile?

In diesem Fall können Sie einen Trigger.AvailableNow-Auftrag (verfügbar in Databricks Runtime 10.4 LTS und höher) für strukturiertes Streaming einrichten und so planen, dass er nach der voraussichtlichen Ankunftszeit der Datei ausgeführt wird. Autoloader funktioniert sowohl mit seltenen als auch häufigen Updates gut. Auch wenn die Updates letztlich sehr groß sind, lässt sich Autoloader gut auf die Eingabegröße skalieren. Die effizienten Dateiermittlungstechniken und Schemaentwicklungsfunktionen des Autoloaders machen den Autoloader zur empfohlenen Methode für die inkrementelle Datenerfassung.

Was geschieht, wenn ich den Prüfpunktspeicherort beim Neustart des Streams ändere?

Am Prüfpunktspeicherort werden wichtige Informationen zur Identifizierung eines Streams verwaltet. Wenn Sie den Prüfpunktspeicherort ändern, bedeutet dies, dass Sie den vorherigen Stream abgebrochen haben und einen neuen Stream starten.

Muss ich die Ereignisbenachrichtigungsdienste vorab erstellen?

Nein. Wenn Sie den Dateibenachrichtigungsmodus auswählen und die erforderlichen Berechtigungen bereitstellen, kann der Autoloader Dateibenachrichtigungsdienste für Sie erstellen. Weitere Informationen finden Sie unterWas ist der Dateibenachrichtrigungsmodus von Autoloader?.

Wie bereinige ich die vom Autoloader erstellten Ereignisbenachrichtigungsressourcen?

Sie können den Cloudressourcen-Manager verwenden, um Ressourcen aufzulisten und zu löschen. Sie können diese Ressourcen auch manuell löschen, indem Sie die Benutzeroberfläche oder APIs des Cloudanbieters verwenden.

Kann ich mehrere Streamingabfragen aus verschiedenen Eingabeverzeichnissen im selben Bucket/Container ausführen?

Ja, solange es sich nicht um über- und untergeordnete Verzeichnisse handelt. Beispielsweise würde prod-logs/ und prod-logs/usage/ nicht funktionieren, da /usage ein untergeordnetes Verzeichnis von /prod-logs ist.

Kann ich dieses Feature nutzen, wenn bereits Dateibenachrichtigungen für meinen Bucket oder Container vorhanden sind?

Ja, solange Ihr Eingabeverzeichnis nicht mit dem vorhandenen Benachrichtigungspräfix in Konflikt steht (z. B. die oben genannten übergeordneten/untergeordneten Verzeichnisse).

Wie leitet der Autoloader das Schema ab?

Wenn der Dataframe zum ersten Mal definiert wird, listet der Autoloader Ihr Quellverzeichnis auf und wählt die neuesten (nach Dateiänderungszeit) 50 GB an Daten oder 1000 Dateien aus und verwendet diese, um Ihr Datenschema abzuleiten.

Autoloader leitet auch Partitionsspalten ab, indem er die Quellverzeichnisstruktur untersucht und nach Dateipfaden sucht, die die /key=value/-Struktur enthalten. Wenn das Quellverzeichnis eine inkonsistente Struktur aufweist, z. B.:

base/path/partition=1/date=2020-12-31/file1.json
// inconsistent because date and partition directories are in different orders
base/path/date=2020-12-31/partition=2/file2.json
// inconsistent because the date directory is missing
base/path/partition=3/file3.json

Der Autoloader leitet die Partitionsspalten als leer ab. Verwenden Sie cloudFiles.partitionColumns, um explizit Spalten aus der Verzeichnisstruktur zu analysieren.

Wie verhält sich der Autoloader, wenn der Quellordner leer ist?

Wenn das Quellverzeichnis leer ist, müssen Sie dem Autoloader ein Schema bereitstellen, da keine Daten für Rückschlüsse vorhanden sind.

Wann leitet der Autoloader ein Schema ab? Wird es nach jedem Mikrobatch automatisch weiterentwickelt?

Das Schema wird abgeleitet, wenn der Dataframe zum ersten Mal in Ihrem Code definiert wird. Bei jedem Mikrobatch werden Schemaänderungen im laufenden Betrieb ausgewertet, sodass Sie keine Leistungseinbußen befürchten müssen. Wenn der Stream neu gestartet wird, holt er sich das entwickelte Schema vom Schemaspeicherort und beginnt mit der Ausführung, ohne dass ein Overhead durch Rückschlüsse entsteht.

Wie wirkt sich die Verwendung des Schemarückschlusses des Autoloaders auf die Leistung beim Einlesen der Daten aus?

Sie sollten davon ausgehen, dass der Schemarückschluss bei sehr großen Quellverzeichnissen während des anfänglichen Schemarückschlusses einige Minuten in Anspruch nimmt. Sie sollten sonst keine signifikanten Leistungseinbußen bei der Streamausführung feststellen. Wenn Sie Ihren Code in einem Azure Databricks Notebook ausführen, werden Statusaktualisierungen angezeigt, die angeben, wann Autoloader Ihr Verzeichnis für das Sampling aufnehmen und Ihr Datenschema ableiten wird.

Aufgrund eines Fehlers hat eine fehlerhafte Datei mein Schema drastisch verändert. Wie kann ich ein Rollback für eine Schemaänderung ausführen?

Wenden Sie sich an den Databricks-Support, um Hilfe zu erhalten.