FIL-typ och ostrukturerad data

Important

Den här funktionen finns i Beta. Arbetsyteadministratörer kan styra åtkomsten till den här funktionen från sidan Förhandsversioner . Se Hantera förhandsversioner av Azure Databricks.

Typen FILE lagrar en styrd referens till en ostrukturerad fil, med metadata såsom sökväg och storlek. Använd FILE kolumner i Unity Catalog för att lagra dokument, bilder och ljud tillsammans med strukturerad data.

Med FILE MANAGED kolumner lagrar Unity Catalog kopior av filerna och hanterar dem via tabellen: när rader tas bort kan de refererade filerna samlas in av skräpsamlaren, så att tabellen och dess filer förblir synkroniserade.

För typreferensen, se FILE typ.

Följande diagram visar en FILE kolumn med namn video som refererar till körklipp tillsammans med strukturerade kolumner som rutt, scenbeskrivning och faroetikett:

En tabell med drivklipp där videokolumnen är en FIL-typ. Varje rad parar strukturerade kolumner (klipp-ID, rutt, scenbeskrivning, faroetikett och en inbäddning) med en videofilreferens som visar en miniatyrbild och en storlek som 1,8 GB.

FILE-metadata och lagring

För varje rad lagrar FILE typen metadata och en styrd länk till filen i lagring. Ett FILE värde inkluderar uri, size, content_type, och checksum metadatafält. Metadata-frågor kräver inte fullständiga filläsningar, vilket förbättrar frågeprestandan.

Du kan skicka FILE värden till AI-funktioner, såsom ai_parse_document funktion, och till användardefinierade funktioner (UDF).

Följande diagram visar ett exempel på en hanterad FILE kolumn, som innehåller sökvägs- och storleksmetadata samt referenser till filerna i lagringen:

Tabellen med klipp, där videokolumnen lagras som typen FILE, visas som ett par bestående av sökväg och storlek. Pilar kopplar varje rad till dess fil i lagringsutrymmet och illustrerar en styrd referens mellan tabellen och filerna.

Metadata och innehållsåtkomst

Ett värde har två delar, och tillgången FILE till varje regleras olika:

  • Filens metadata (uri, size, content_type och checksum) lagras i tabellens egna datafiler. Alla med SELECT på bordet kan läsa den.
  • Filinnehållet stannar kvar i förvaring. Att läsa dem kräver åtkomst till filen: READ VOLUME på den underliggande volymen för FILE EXTERNAL, eller åtkomst till både tabellen och volymen som utgör underlag för FileSpace för FILE MANAGED.

Att kasta ett FILE värde till BINARY eller STRING, skicka det till en AI-funktion eller UDF och förhandsgranska det i resultattabellen läser allt filinnehåll. Eftersom metadata är en del av tabellen är filens sökväg och storlek synliga för alla som kan fråga tabellen, även utan tillgång till innehållet.

För att förhandsgranska filer i frågeresultat, se Förhandsgranskningsfiler i FIL-kolumnerna.

Varför använda FIL istället för BINARY eller STRING

Följande tabell beskriver utmaningarna vid hantering av stora ostrukturerade filer med BINARY eller STRING typer:

Kolumntyp Description Diagram
BINARY Materialiserar hela objektet för varje läsning, även när du bara behöver metadata som filstorlek eller sökväg. Detta leder till onödig beräkning och långsamma frågor. Tabellen clips med en videokolumn lagrad som BINARY. De råa bytena för varje video på flera gigabyte materialiseras direkt i kolumnen.
STRING Lagrar en filsökväg utan metadata, såsom storlek eller versionsinformation, och utan styrd länk mellan tabellen och filen. Om en annan arbetsbelastning tar bort filen har tabellen föråldrad information. Om du tar bort en tabellrad förblir den refererade filen kvar i förvaring tills du tar bort den manuellt. Tabellen med klipp, där videokolumnen lagras som en STRING-sökväg, till exempel s3://.../NW-0142. En sökväg pekar inte längre på en fil i volymen, vilket visar att sökvägar som lagras som strängar inte garanterar att filer existerar och att styrningen inte är kopplad.

Kontrollsummor

Fältet checksum är en integritetstoken för filens bytes, av formen <prefix>:<digest>. Använd den för att jämföra filer eller verifiera att en fil inte har ändrats. Läsare ignorerar en kontrollsumma med ett okänt prefix.

En checksumma finns inte alltid tillgänglig. to_file Funktion, create_file funktion och copy_file funktion fyller i kontrollsumman när objektlagret returnerar en ETAG. list_files Tabellvärdesfunktion och read_files tabellvärd funktion fyller inte i kontrollsumman.

Fältet checksum använder ett av följande prefix:

Prefix Digest-kodning Description
ETAG Opaque Objektlagrets eTag för hela filen. Tillhandahålls ord för ord av butiken, används endast för likhetsjämförelse och kan inte beräknas om.
MD5 Hex med gemener Ett MD5-digest (RFC 1321), 32 hexadecimala tecken.
CRC32 Hex med gemener En CRC32-kontrollsumma (RFC 2083), 8 hexagontecken.
CRC32C Hex med gemener En CRC32C-kontrollsumma (RFC 3385), 8 hexadecimala tecken.
SHA-256 Hex med gemener En SHA-256-sammanfattning (RFC 6234), 64 hexadikter.

Till exempel ser en MD5-kontrollsumma ut som MD5:d41d8cd98f00b204e9800998ecf8427e, och en objektlagrad eTag ser ut som ETAG:"686897696a7c876b7e", inklusive de omgivande dubbla citaterna som returneras av objektlagret.

Välj mellan FILE och BINARY

Följande tabell jämför alternativen för att arbeta med ostrukturerade filer:

Kolumntyp Värden Användningsfall
FILE En styrd referens till en fil, plus metadata (uri, size, content_type, ). checksum Användning för att hantera och bearbeta ostrukturerade filer tillsammans med strukturerad data, samt för att skicka filer till inbyggda och AI-funktioner.
BINARY De råa bytena i en fil, inline i en kolumn. Används för små objekt (upp till 64 KB som standard) som lagras direkt i datafilen. Detta är användbart när du behöver låg metadata-overhead och förenklad filhantering. Använd till exempel detta för att lagra miniatyrbilder i rad med raddata.

HANTERAD FIL OCH EXTERN FIL

Typen FILE stödjer två metoder för att hantera filerna:

  • FILE MANAGED Kolumner kopierar filer till hanterad lagring. Behörigheter förenklas och hanteras via tabellen. När du raderar rader eller uppdaterar dem för att referera till olika filer, blir de orefererade filerna berättigade för skräpsamling, så tabellen och dess filer förblir synkroniserade. Använd detta tillvägagångssätt för arbetsbelastningar som får åtkomst till filer via en tabell, såsom ML-träning eller hämtande-förstärkt generering (RAG), samt för filer som hämtats från externa källor. För inläsningsmönster, se Läs in filer som typen FILE.
  • FILE EXTERNAL kolumner refererar till befintliga filer i en Unity Catalog-volym. Filerna är säkrade med Unity Catalog-volymbehörigheter, men deras livscykel hanteras inte av Unity Catalog och de kopieras inte. Använd detta tillvägagångssätt när du behöver referera filer utan att flytta data eller störa verktyg som läser från en befintlig volym.

Azure Databricks rekommenderar FILE MANAGED för arbetslaster som drar nytta av filnivåbehörigheter och inbyggd regelefterlevnad: åtkomsten till varje fil styrs via den tabell som refererar till den, och om rader tas bort kan de refererade filerna samlas in av skräpinsamlingen. Använd FILE EXTERNAL när filer måste stanna på sina befintliga volymbanor för verktyg som läser dem utanför tabellen.

För frågor finns det ingen skillnad mellan hanterade och externa filer.

Följande diagram visar hur FILE typen kopplar din kod till filer i molnobjektlagring:

Diagram över arkitekturen för typen FILE. Python-, SQL-, Scala- och UDF-klienter arbetar med en enda typ, FILE, som läser metadata utan att hämta filernas byteinnehåll. FILE MANAGED lagrar filer i ett FileSpace där åtkomsten styrs på tabellnivå och där borttagning av rader gör att filer kan samlas in av skräpsamlingen. FILE EXTERNAL refererar till filer på deras befintliga sökvägar i en UC-volym, där åtkomsten styrs av behörigheter för volymen. Båda lägena lagrar filer i molnbaserad objektlagring som S3, ADLS eller Google Cloud Storage.

FILE MANAGED

FILE MANAGED kolumner lagrar kopior av filer i en FileSpace, en Unity Catalog-volym som du deklarerar för tabellen att använda som hanterad lagring. Deras livscykel är kopplad till tabellerna som refererar till dem: när rader raderas kan de refererade filerna tas om hand av skräpinsamlingen, så att tabellen och dess filer hålls synkroniserade.

Följande beteenden gäller för FILE MANAGED:

  • Att deklarera FileSpace kräver tabellens egenskap databricks.filespace-preview.
  • Att läsa eller skriva en hanterad fil kräver åtkomst till både tabellen och volymen som ligger bakom FileSpace.
  • Automatisk skräpsamling av orefererade filer stöds inte i Beta.

Ostrukturerade filer som lagras i externa källor som SharePoint, Google Drive, OneDrive och SFTP måste importeras som hanterade filer innan du kan använda dem med funktioner som ai_parse_document funktion och användardefinierade funktioner (UDF). För inläsningsmönster, se Läs in filer som typen FILE.

För att använda hanterade filer skapar du en tabell med en kolumn av typen FILE MANAGED och deklarerar en volym som FileSpace genom att ange tabellegenskapen databricks.filespace-preview till sökvägen till en volym:

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

För fullständiga exempel, se följande FILE MANAGED exempel.

FILE MANAGED exempel

För att skapa en tabell med en FILE MANAGED kolumn:

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

För att lägga till en FILE MANAGED kolumn i en befintlig tabell, ställ in tabellegenskapen databricks.filespace-preview innan du lägger till kolumnen, som i följande kod:

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

ALTER TABLE reports ADD COLUMN attachment FILE MANAGED;

Att lägga till en FILE MANAGED kolumn i en tabell som inte har några FileSpace misslyckas.

Radera orefererade hanterade filer

Eftersom automatisk skräpsamling inte stöds, radera filer utan referenser själv. Följande anteckningsbok hittar filerna i en FileSpace som ingen tabellversion refererar till, och raderar dem valfritt:

FileType-skräpsamlingsanteckningsbok

Hämta anteckningsbok

FILE EXTERNAL

FILE EXTERNAL kolumner är referenser till filer som redan finns i en Unity Catalog-volym.

Om du har de nödvändiga rättigheterna på volymen kan du uppdatera eller ta bort dessa filer. Databricks rekommenderar att du använder oföränderliga filer. Behörighet på tabellnivå ger åtkomst till filmetadata, men att läsa filens byteinnehåll kräver också behörigheten READ VOLUME på den underliggande volymen.

En extern fil mappar varje tabellrad till en fil vid dess befintliga sökväg i en Unity Catalog-volym:

Ett diagram över en UC-volym som innehåller studiefiler organiserade i fasmappor, som mappas till kolumnen EXTERNAL FILE. Varje tabellrad hänvisar till en fil via sin volymsökväg och lägger till strukturerade kolumner som Cohort och Study Phase.

FILE EXTERNAL exempel

För att skapa en tabell med en FILE EXTERNAL kolumn:

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

För att lägga till en FILE EXTERNAL kolumn i en befintlig tabell:

ALTER TABLE documents ADD COLUMN file FILE EXTERNAL;

För att skapa och fylla en tabell från en volym, genom att tilldela unika ID:n till varje fil:

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

Styrning och livscykeljämförelse

Följande tabell jämför hur och FILE MANAGED styr FILE EXTERNAL filåtkomst och hantering av filens livscykel:

Kolumntyp FILE MANAGED FILE EXTERNAL
Filåtkomstkontroll Styrs av tabell- och volymbehörigheter, såsom SELECT på tabellen och READ VOLUME på volymen. Styrd av volymbehörigheter, såsom READ VOLUME.
Livscykel och skräpinsamling Filer är kopplade till raderna som refererar till dem. Att ta bort dessa rader gör filerna godkända för skräpsamling. Automatisk skräpsamling stöds inte. Du hanterar filerna själv. Att ta bort en tabellrad påverkar inte den underliggande filen i volymen.

FILE-typanvändningsfall

Både hanterade och externa FILE typer hanterar följande utmaningar för användningsfall med ostrukturerad data:

Utmaning Stödd FILE typ Benefits
Filer för stora för att lagras inline som BINARY FILE MANAGED eller FILE EXTERNAL En kolumn av typen FILE lagrar en referens, så en fil läses bara när en AI-funktion eller UDF bearbetar den. Detta förhindrar att stora objekt materialiseras direkt i tabellen.
Frånkopplad livscykel och styrning mellan filsystemet och tabellen FILE MANAGED Azure Databricks knyter varje fils livscykel till tabellen, så att när rader tas bort kan filerna rensas bort i stället för att lämnas som föräldralösa filer i lagringen.
Samtidiga arbetsbelastningar som kräver att filer stannar på samma plats FILE EXTERNAL Filer stannar på sina befintliga volymvägar, opåverkade av tabellens livscykel, så andra verktyg som läser samma filer störs inte.

Nästa steg