FILE-Typ und unstrukturierte Daten

Important

Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Manage Azure Databricks Previews.

Der Typ FILE speichert eine kontrollierte Referenz auf eine unstrukturierte Datei mit Metadaten wie Pfad und Größe. Verwenden Sie FILE Spalten im Unity-Katalog, um Dokumente, Bilder und Audiodateien neben strukturierten Daten zu speichern.

Für die Typreferenz siehe FILE Typ.

Das folgende Diagramm zeigt eine Spalte FILE , die video auf Fahrclips verweist, neben strukturierten Spalten wie Route, Szenenbeschreibung und Gefahrenlabel:

Eine Tabelle mit Antriebsclips, bei der die Videospalte ein DATEI-Typ ist. Jede Zeile koppelt strukturierte Spalten (Clip-ID, Route, Szenenbeschreibung, Gefahrenetikett und Einbettung) mit einer Videodatei-Referenz, die ein Vorschaubild und eine Größe wie 1,8 GB zeigt.

FILE-Metadaten und Speicher

Für jede Zeile speichert der Typ FILE Metadaten und einen verwalteten Link zur gespeicherten Datei. Ein FILE Wert enthält uri, size, content_type, und checksum Metadatenfelder. Metadaten-Abfragen erfordern keine vollständigen Dateilesungen, was die Abfrageleistung verbessert.

Man kann Werte an KI-Funktionen, wie Funktionenai_parse_document, und an benutzerdefinierte Funktionen (UDFs) weitergebenFILE.

Das folgende Diagramm zeigt ein Beispiel für eine verwaltete Spalte FILE , die Pfad- und Größenmetadaten sowie Verweise auf die gespeicherten Dateien enthält:

Die Clips-Tabelle mit der Video-Spalte als DATEI-Typ, dargestellt als Pfad- und Größenpaar. Pfeile verknüpfen jede Zeile mit ihrer Speicherdatei und illustrieren eine regelrechte Referenz zwischen der Tabelle und den Dateien.

Warum FILE statt BINARY oder STRING verwenden

Die folgende Tabelle beschreibt die Herausforderungen beim Umgang mit großen unstrukturierten Dateien mit BINARY oder STRING Typen:

Spaltentyp Description Diagramm
BINARY Materialisiert das vollständige Objekt für jede Lesung, selbst wenn man nur Metadaten wie Dateigröße oder Pfad benötigt. Dies führt zu unnötigen Berechnungen und langsamen Abfragen. Die Clips-Tabelle mit der Video-Spalte als BINÄR. Die Rohbytes jedes Multi-Gigabyte-Videos werden in der Spalte materialisiert.
STRING Speichert einen Dateipfad ohne Metadaten, wie etwa Größe oder Versionsinformationen, und ohne kontrollierte Verbindung zwischen Tabelle und Datei. Wenn eine andere Arbeitslast die Datei entfernt, enthält die Tabelle veraltete Informationen. Wenn du eine Tabellenzeile entfernst, bleibt die referenzierte Datei im Speicher, bis du sie manuell entfernst. Die Clips-Tabelle mit der Videospalte als STRING-Pfad gespeichert, zum Beispiel s3://.../NW-0142. Ein Pfad wird nicht mehr zu einer Datei im Volume aufgelöst, was zeigt, dass Stringpfade nicht garantieren, dass Dateien existieren und dass die Governance nicht verknüpft ist.

Prüfsummen

Das Feld checksum ist ein Integritätstoken für die Bytes der Datei, in der Form <prefix>:<digest>. Nutze es, um Dateien zu vergleichen oder zu überprüfen, ob sich eine Datei nicht verändert hat. Leser ignorieren eine Prüfsumme mit einem nicht anerkannten Präfix.

Eine Schecksumme ist nicht immer verfügbar. to_file Funktion, create_file Funktion und copy_file Funktion füllen die Prüfsumme aus, wenn der Objektspeicher ein ETAGFormular zurückgibt. list_files Tabellenwerte Funktionen und read_files tabellenwertige Funktionen füllen die Prüfsumme nicht aus.

Das Feld checksum verwendet eines der folgenden Präfixe:

Präfix Digest-Codierung Description
ETAG Opaque Das eTag des Objektspeichers für die gesamte Datei. Wortwörtlich vom Laden geliefert, nur zum Vergleich der Gleichheit verwendet und nicht rekonchabel.
MD5 Kleinbuchstaben-Hex Ein MD5-Digest (RFC 1321), 32 Hexzeichen.
CRC32 Kleinbuchstaben-Hex Eine CRC32-Prüfsumme (RFC 2083), 8 Hexzeichen.
CRC32C Kleinbuchstaben-Hex Eine CRC32C-Prüfsumme (RFC 3385), 8 Hexzeichen.
SHA-256 Kleinbuchstaben-Hex Ein SHA-256-Digest (RFC 6234), 64 Hexzeichen.

Zum Beispiel sieht eine MD5-Prüfsumme so MD5:d41d8cd98f00b204e9800998ecf8427eaus, und ein objektspeichernder eTag sieht aus wie ETAG:"686897696a7c876b7e", einschließlich der umgebenden doppelten Anführungszeichen, die vom Objektspeicher zurückgegeben werden.

Wählen Sie zwischen FILE und BINARY

Die folgende Tabelle vergleicht die Optionen für die Arbeit mit unstrukturierten Dateien:

Spaltentyp Werte Anwendungsfall
FILE Eine kontrollierte Referenz auf eine Datei plus Metadaten (uri, size, content_type, checksum). Verwendung zur Verwaltung und Verarbeitung unstrukturierter Dateien zusammen mit strukturierten Daten sowie zur Weitergabe von Dateien an integrierte und KI-Funktionen.
BINARY Die Rohbytes einer Datei, inline in einer Spalte. Verwendung für kleine Objekte (standardmäßig bis zu 64 KB), die direkt in der Datendatei gespeichert sind. Das ist nützlich, wenn man einen geringen Metadaten-Overhead und eine vereinfachte Dateiverwaltung benötigt. Verwenden Sie diese zum Beispiel, um Miniaturen in einer Reihe mit Zeilendaten zu speichern.

EXTERNE DATEI UND DATEI VERWALTET

Der Typ FILE unterstützt zwei Ansätze zur Verwaltung der Dateien:

  • FILE EXTERNAL Spalten beziehen sich auf bestehende Dateien in einem Unity-Katalog-Volume. Die Dateien sind durch Unity-Katalog-Volume-Berechtigungen gesichert, aber ihr Lebenszyklus wird nicht von Unity Catalog verwaltet und sie werden nicht kopiert. Verwenden Sie diesen Ansatz, wenn Sie Dateien referenzieren müssen, ohne Daten zu verschieben oder Werkzeuge zu stören, die von einem bestehenden Volume lesen.
  • FILE MANAGED Spalten kopieren Dateien in verwalteten Speicher. Setzen Sie die databricks.filespace-preview Tabelleneigenschaft auf einen verwalteten Volumenpfad, den Unity Catalog als Speicher verwenden kann. Verwenden Sie diesen Ansatz, wenn Sie vereinfachte Berechtigungen möchten, die über die Tabelle verwaltet werden, für Workloads, die nur über eine Tabelle auf Dateien zugreifen, wie ML-Training oder Retrieval-Augmented Generation (RAG). Für Eingabemuster siehe Ingest-Dateien als DATEITYP.

Bei Abfragen gibt es keinen Unterschied zwischen externen und verwalteten Dateien.

Das folgende Diagramm zeigt, wie der FILE Typ Ihren Code mit Dateien im Cloud-Objektspeicher verbindet:

Diagramm der FILE-Typ-Architektur. Client-Schnittstellen wie Python, SQL, Scala und UDFs arbeiten mit einem einzigen FILE-Typ, der lazy loading unterstützt. Der Typ hat zwei Varianten: FILE EXTERNAL, wo das Dateisystem den Lebenszyklus verwaltet, und FILE MANAGED, bei dem UC die Governance über die Tabelle optimiert. Externe Dateien werden auf ein externes Volume abgebildet, das auf Volume-Ebene gesteuert wird, und verwaltete Dateien auf einen FileSpace, der auf Tabellenebene verwaltet wird, sowohl in Cloud-Objektspeichern wie S3, ADLS oder Google Cloud Storage.

FILE EXTERNAL

FILE EXTERNAL Spalten sind Verweise auf Dateien, die bereits in einem Unity-Katalog-Volume existieren.

Wenn du die erforderlichen Rechte auf dem Volume hast, kannst du diese Dateien aktualisieren oder löschen. Databricks empfiehlt, unveränderliche Dateien zu verwenden. Eine Table Grant stellt die Dateimetadaten frei, aber das Lesen der Dateibytes erfordert auch das READ VOLUME Privileg auf dem zugrunde liegenden Volume.

Eine externe Datei weist jede Tabellenzeile auf eine Datei auf ihrem bestehenden Pfad in einem Unity-Catalog-Volume zu:

Ein Diagramm eines UC-Volumens, das Testdateien enthält, organisiert unter Phase-Ordnern und einer Spalte EXTERNE DATEI zugeordnet. Jede Tabellenzeile verweist auf eine Datei anhand ihres Volumenpfads und fügt strukturierte Spalten wie Cohort und Study Phase hinzu.

Beispiele für FILE EXTERNAL

Um eine Tabelle mit einer Spalte FILE EXTERNAL zu erstellen:

CREATE TABLE documents (id BIGINT, file FILE EXTERNAL);

Um eine FILE EXTERNAL Spalte zu einer bestehenden Tabelle hinzuzufügen:

ALTER TABLE documents ADD COLUMN file FILE EXTERNAL;

Um eine Tabelle aus einem Volume zu erstellen und zu füllen, wobei jeder Datei eindeutige IDs zugewiesen werden:

CREATE TABLE documents AS
  SELECT monotonically_increasing_id() AS id, file
  FROM list_files('/Volumes/samples/sec/contracts/');

FILE MANAGED

FILE MANAGED Spalten speichern Kopien von Dateien in einem FileSpaceUnity-Katalog-Volume, das Sie für die Tabelle als verwalteten Speicher deklarieren. Ihr Lebenszyklus ist an die Tabellen gebunden, die sie referenzieren.

Die folgenden Verhaltensweisen gelten für FILE MANAGED:

  • Die Deklaration erfordert FileSpace die databricks.filespace-preview Tabelleneigenschaft.
  • Das Lesen oder Schreiben einer verwalteten Datei erfordert Zugriff sowohl auf die Tabelle als auch auf das Volumen, das das FileSpaceunterstützt.
  • Automatische Garbage Collection von unreferenzierten Dateien wird nicht unterstützt.

Unstrukturierte Dateien, die in externen Quellen wie SharePoint, Google Drive, OneDrive und SFTP gespeichert sind, müssen als verwaltete Dateien importiert werden, bevor Sie sie mit Funktionen wie ai_parse_document Funktion und benutzerdefinierten Funktionen (UDFs) verwenden können. Für Eingabemuster siehe Ingest-Dateien als DATEITYP.

Um verwaltete Dateien zu verwenden, erstellen Sie eine Tabelle mit einer Spalte FILE MANAGED und deklarieren Sie ein Volumen als die FileSpace , indem Sie die databricks.filespace-preview Tabelleneigenschaft auf einen Volumenpfad setzen:

'databricks.filespace-preview' = '/Volumes/<catalog>/<schema>/<volume_name>/<optional_path>'

Vollständige Beispiele finden Sie in den folgenden FILE MANAGED Beispielen. Der Lebenszyklus von Dateien in einem FileSpace ist an die Zeilen gebunden, die auf sie verweisen. Das Löschen dieser Zeilen macht die Dateien für die Garbage Collection geeignet.

Beispiele für FILE MANAGED

Um eine Tabelle mit einer Spalte FILE MANAGED zu erstellen:

CREATE TABLE reports (id BIGINT, file FILE MANAGED)
  TBLPROPERTIES ('databricks.filespace-preview' = '/Volumes/my_catalog/my_schema/my_managed_volume/');

Um eine FILE MANAGED Spalte zu einer bestehenden Tabelle hinzuzufügen, setze die databricks.filespace-preview Tabelleneigenschaft vor dem Hinzufügen der Spalte, wie im folgenden Code:

ALTER TABLE reports SET TBLPROPERTIES ('databricks.filespace-preview' = '/Volumes/my_catalog/my_schema/my_managed_volume/');

ALTER TABLE reports ADD COLUMN attachment FILE MANAGED;

Eine Spalte zu einer Tabelle hinzuzufügen FILE MANAGED , die keine Fehler FileSpace hat.

Governance und Lebenszyklusvergleich

Die folgende Tabelle vergleicht, FILE MANAGED wie und wie FILE EXTERNAL der Dateizugriff sowie der Umgang mit dem Dateilebenszyklus geregelt wird:

Spaltentyp FILE EXTERNAL FILE MANAGED
Dateizugriffskontrolle Regelt durch Volumenberechtigungen, wie zum Beispiel READ VOLUME. Sie werden durch Tabellen- und Volumenberechtigungen geregelt, wie SELECT etwa auf der Tabelle und READ VOLUME auf dem Volumen.
Lebenszyklus und Garbage Collection Du verwaltest die Dateien selbst. Das Löschen einer Tabellenzeile beeinflusst nicht die zugrundeliegende Datei im Volume. Dateien sind mit den Zeilen verknüpft, die sie referenzieren. Das Löschen dieser Zeilen macht die Dateien für die Garbage Collection geeignet. Automatische Garbage Collection wird nicht unterstützt.

FILE-Typ-Anwendungsfälle

Sowohl externe als auch verwaltete FILE Typen lösen folgende Herausforderungen für Anwendungsfälle mit unstrukturierten Daten:

Herausforderung Unterstützter FILE Typ Benefits
Dateien sind zu groß, um sie inline zu speichern als BINARY FILE MANAGED oder FILE EXTERNAL Eine Spalte speichert eine Referenz, sodass eine Datei nur gelesen wird, wenn eine KI-Funktion oder UDF sie verarbeitet.FILE Dadurch wird verhindert, dass große Objekte in einer Reihe in der Tësche materialisiert werden.
Getrennter Lebenszyklus und Governance zwischen Dateisystem und Tabelle FILE MANAGED Azure Databricks verknüpft den Lebenszyklus jeder Datei an die Tabelle, sodass das Löschen von Zeilen die Dateien für die Bereinigung geeignet macht, anstatt verwaiste Dateien im Speicher zu lassen.
Gleichzeitige Arbeitslasten, bei denen Dateien am selben Ort bleiben müssen FILE EXTERNAL Dateien bleiben auf ihren bestehenden Volumenpfaden und werden vom Lebenszyklus der Tabelle nicht beeinflusst, sodass andere Tools, die dieselben Dateien lesen, nicht gestört werden.

Nächste Schritte