Häufig gestellte Fragen zum Autoloader

Hier finden Sie Antworten auf häufig gestellte Fragen zu Databricks Auto Loader.

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

Mit der Standardeinstellung (cloudFiles.allowOverwrites = false) werden Dateien genau einmal verarbeitet. Wenn eine Datei angefügt oder überschrieben wird, kann das automatische Laden nicht garantieren, welche Dateiversion verarbeitet wird. Um den Auto Loader zuzulassen, die Datei erneut zu verarbeiten, können Sie die Einstellung auf cloudFiles.allowOverwrites ändern, wenn die Datei angefügt oder überschrieben wird. In diesem Fall ist garantiert, dass der Auto Loader die neueste Version der Datei verarbeitet. Das automatische Laden kann jedoch nicht garantieren, welche Zwischenversion verarbeitet wird.

Seien Sie vorsichtig, wenn Sie den Dateibenachrichtigungsmodus cloudFiles.allowOverwrites aktivieren. Im Dateibenachrichtigungsmodus kann das automatische Laden neue Dateien über Dateibenachrichtigungen und Verzeichnisauflistung identifizieren. Da die Zeit des Dateibenachrichtigungsereignisses und die Dateiänderungszeit unterschiedlich sein können, kann das automatische Laden zwei unterschiedliche Zeitstempel empfangen und dieselbe Datei zweimal aufnehmen, auch wenn die Datei nicht aktualisiert wurde.

Mit cloudFiles.allowOverwrites aktivierter Option müssen Sie doppelte Datensätze selbst behandeln. Der Auto Loader verarbeitet die gesamte Datei erneut, auch wenn sie angehängt oder teilweise aktualisiert wurde. Im Allgemeinen empfiehlt Azure Databricks die Verwendung des automatischen Ladens, um unveränderliche Dateien nur aufzunehmen und die Standardeinstellung zu verwenden cloudFiles.allowOverwrites = false. Wenn Sie weitere Fragen haben, wenden Sie sich an Ihr Azure Databricks-Kontoteam.

Wie bestimmt das automatische Laden, ob eine Datei aufgenommen wurde oder nicht?

Auto Loader verarbeitet jede Datei normalerweise nur einmal basierend auf ihrem Dateipfad. Wenn Sie jedoch die Option allowOverwrites auf true festlegen, verwendet Auto Loader auch den Zeitstempel der letzten Änderung der Datei, um zu bestimmen, ob eine Datei neu ist oder aktualisiert wurde und erneut eingelesen werden muss. Lesen Sie Verarbeitet der Auto-Loader die Datei erneut, wenn die Datei angefügt oder überschrieben wird?

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 Methoden für die Dateiermittlung und die Schemaentwicklungsfunktionen von Auto Loader machen das automatische Laden zur empfohlenen Methode für die inkrementelle Datenaufnahme.

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 ermittelt der Auto Loader das Schema? 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 ad-hoc ausgewertet; daher müssen Sie sich keine Gedanken über Leistungseinbußen machen. 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.

Welche Auswirkungen hat das Einspeisen der Daten auf die Leistung beim Verwenden der Auto Loader-Schemaerkennung?

Sie sollten davon ausgehen, dass die Schema-Erfassung bei sehr großen Quellverzeichnissen während des ersten Rückschlussprozesses einige Minuten in Anspruch nimmt. Sie sollten während der Ausführung des Streams keine signifikanten Leistungseinbußen beobachten. 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. Was sollte ich tun, um eine Schemaänderung rückgängig zu machen?

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

Was geschieht, wenn ich den Prüfpunkt-Speicherort beim Neustart des Streams ändere?

Am Checkpoint-Standort werden wichtige identifizierende Informationen eines Streams verwaltet. Wenn Sie wirksam den Checkpoint-Standort ändern, bedeutet dies, dass Sie den vorherigen Stream aufgegeben haben und einen neuen Stream starten.

Muss ich vorher einen Ereignisbenachrichtigungsdienst erstellen?

Nein. Wenn Sie den Dateibenachrichtigungsmodus auswählen und die erforderlichen Berechtigungen bereitstellen, kann der Autoloader Dateibenachrichtigungsdienste für Sie erstellen. Siehe Verwalten von Dateibenachrichtigungswarteschlangen für jeden Auto Loader-Datenstrom separat (klassisch).

Wenn Dateiereignisse am externen Speicherort im Unity-Katalog aktiviert sind, kann der Dateiereignissedienst die Dateiereignisse in Ihrem Cloudanbieter erstellen, und Sie müssen Auto Loader nicht konfigurieren, um sie für jeden Datenstrom zu erstellen. Siehe Verwenden des Dateibenachrichtigungsmodus mit Dateiereignissen

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 diese Funktion 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 Parent-Child-Verzeichnisse).

Kann ich eine SQS-Warteschlange zwischen Auto Loader und anderen Anwendungen teilen?

Databricks empfiehlt nicht, eine SQS-Warteschlange zwischen Auto Loader und anderen Anwendungen freizugeben. Leiten Sie stattdessen Ihre S3-Ereignisbenachrichtigungen an ein SNS-Thema weiter, und abonnieren Sie dann eine separate SQS-Warteschlange für jede Anwendung für dieses Thema. Verwenden Sie eine SNS-Abonnementfilterrichtlinie, um sicherzustellen, dass nur die relevanten Nachrichten an jede Warteschlange weitergeleitet werden. Stellen Sie dann die dedizierte Warteschlange für Auto Loader bereit.

Wie kann ich bestätigen, dass Dateiereignisse ordnungsgemäß eingerichtet sind?

Klicken Sie auf der Externen Standortseite auf die Schaltfläche " Verbindung testen ". Wenn Sie Dateiereignisse richtig einrichten, wird ein grünes Häkchen für das Element " Dateiereignisse lesen " angezeigt. Wenn Sie gerade den externen Speicherort erstellt und Dateiereignisse im Automatic Modus aktiviert haben, wird der Test Skipped angezeigt, während Azure Databricks Benachrichtigungen für den externen Speicherort einrichtet. Warten Sie einige Minuten, und klicken Sie dann erneut auf "Verbindung testen" . Wenn Azure Databricks nicht über die erforderlichen Berechtigungen zum Einrichten oder zum Lesen aus Dateiereignissen verfügt, wird beim Element File Events Read ein Fehler angezeigt.

Kann ich während der ersten Ausführung eine vollständige Verzeichnisauflistung vermeiden?

Nein. Selbst wenn includeExistingFiles auf false gesetzt ist, führt der Auto Loader eine Verzeichnisauflistung durch, um Dateien zu ermitteln, die nach dem Start des Streams erstellt wurden, und den Dateiereignissecache zu aktualisieren (eine gültige Leseposition im Cache sichern und im Prüfpunkt des Streams speichern).

Muss ich festlegen cloudFiles.backfillInterval , um fehlende Dateien zu vermeiden?

Nein. Azure Databricks hat diese Einstellung zuvor für den klassischen Dateibenachrichtigungsmodus empfohlen, da Cloudspeicherbenachrichtigungssysteme zu verpassten oder verspätet eingehenden Dateien führen könnten. Jetzt führt Azure Databricks vollständige Verzeichnisauflistungen am externen Speicherort aus. Die erste vollständige Verzeichnisauflistung beginnt, sobald Dateiereignisse am externen Speicherort aktiviert sind. Jede nachfolgende Auflistung erfolgt 24 Stunden nach dem letzten vollständigen Scan, solange mindestens ein Auto Loader-Datenstrom vorhanden ist, der Dateiereignisse nutzt, um Daten aufzunehmen.

Ich habe Dateiüberwachungsereignisse mit einer bereitgestellten Speicherwarteschlange eingerichtet, aber die Warteschlange wurde falsch konfiguriert, und ich habe Dateien übersehen. Wie kann ich sicherstellen, dass das automatische Laden die Dateien erfasst, die verpasst wurden, als meine Warteschlange falsch konfiguriert wurde?

Überprüfen Sie zunächst, ob die bereitgestellte Warteschlangenfehlerkonfiguration behoben ist. Klicken Sie zum Überprüfen auf der Externen Standortseite auf die Schaltfläche " Verbindung testen ". Wenn Sie Dateiereignisse richtig einrichten, wird ein grünes Häkchen für das Element "Dateiereignisse lesen " angezeigt.

Azure Databricks führt eine vollständige Verzeichnisauflistung für externe Speicherorte mit aktivierten Dateiereignissen durch. In dieser Verzeichnisauflistung werden alle Dateien gefunden, die während des Fehlkonfigurationszeitraums verpasst wurden und im Datei-Ereignis-Cache gespeichert.

Nachdem die Fehlkonfiguration behoben wurde und Azure Databricks die Verzeichnisauflistung abgeschlossen hat, liest Auto Loader weiterhin aus dem Dateiereignissecache und ingeriert automatisch alle Dateien, die während des Fehlkonfigurationszeitraums verpasst wurden.

Wie kann ich mich von einem CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN Fehler erholen?

Dieser Fehler tritt auf, wenn das Fortsetzungstoken, das im Auto Loader-Prüfpunkt für den Dateiereignisdienst gespeichert ist, ungültig geworden ist.

Einige häufige Ursachen:

  • cloudFiles.useManagedFileEvents wurde deaktiviert und dann wieder aktiviert.
  • Änderung des externen Speicherorts oder Volumes der Quelle.
  • Änderung der bereitgestellten Warteschlange.

Zum Wiederherstellen:

  1. Legen Sie .option("cloudFiles.listOnStart", "true") und .option("cloudFiles.validateOptions", false) in Ihrer Streaming-Abfrage fest.
  2. Starten Sie den Datenstrom neu. Auto Loader führt eine vollständige Verzeichnisauflistung beim Start aus und umgeht das ungültige Fortsetzungstoken.
  3. Entfernen Sie nach einem erfolgreichen Mikrobatch beide Optionen, und starten Sie den Datenstrom neu.

Weitere Informationen zur cloudFiles.listOnStart Option finden Sie unter "Dateibenachrichtigung".

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 mithilfe der Benutzeroberfläche oder APIs des Cloudanbieters löschen.