Typ pliku i dane nieustrukturyzowane

Important

Ta funkcja jest dostępna w wersji beta. Administratorzy obszaru roboczego mogą kontrolować dostęp do tej funkcji ze strony Podglądy . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.

Typ ten FILE przechowuje uporządkowaną referencję do pliku nieustrukturyzowanego, z metadanymi takimi jak ścieżka i rozmiar. Używaj FILE kolumn w Unity Catalog do przechowywania dokumentów, obrazów i nagrań audio obok danych strukturalnych.

W przypadku kolumn FILE MANAGED Unity Catalog przechowuje kopie plików i zarządza nimi poprzez tabelę: usunięcie wierszy sprawia, że pliki, do których odwołuje się tabela, kwalifikują się do usunięcia w ramach oczyszczania, dzięki czemu tabela i jej pliki pozostają zsynchronizowane.

Aby uzyskać informacje o typie, zobacz FILE typ.

Poniższy diagram przedstawia kolumnę FILE o nazwie video, która odwołuje się do nagrań z jazdy, obok ustrukturyzowanych kolumn, takich jak trasa, opis sceny i etykieta zagrożenia:

Tabela klipów z jazdy, w której kolumna wideo ma typ FILE. Każdy wiersz łączy kolumny strukturalne (identyfikator klipu, trasę, opis sceny, etykietę zagrożenia oraz wektor osadzeń) z odnośnikiem do pliku wideo, który pokazuje miniaturę i rozmiar, np. 1,8 GB.

Metadane i przechowywanie pliku FILE

Dla każdego wiersza FILE typ przechowuje metadane oraz uporządkowany link do pliku w pamięci. Wartość FILE obejmuje uripola size, , content_type, oraz checksum metadanych. Zapytania metadanych nie wymagają pełnego odczytu plików, co poprawia wydajność zapytań.

Możesz przekazywać FILE wartości do funkcji AI, takich jak ai_parse_document funkcja, oraz do funkcji definiowanych przez użytkownika (UDF).

Poniższy diagram przedstawia przykładową kolumnę zarządzaną FILE , zawierającą metadane ścieżek i rozmiarów oraz odniesienia do plików znajdujących się w pamięci:

Tabela klipów z kolumną wideo zapisaną jako typ PLIKU, wyświetlana jako para ścieżki i rozmiaru. Strzałki łączą każdy wiersz z jego plikiem w pamięci, ilustrując uporządkowaną referencję między tabelą a plikami.

Metadane i dostęp do treści

Wartość składa FILE się z dwóch części, a dostęp do każdej z nich jest regulowany inaczej:

  • metadane plików (uri, size, content_type, oraz checksum) są przechowywane w własnych plikach danych tabeli. Każdy, kto ma SELECT na stole, może go przeczytać.
  • Zawartość plików pozostaje przechowywana. Do ich odczytu wymagany jest dostęp do pliku: READ VOLUME na bazowym woluminie dla FILE EXTERNAL, lub dostęp zarówno do tabeli, jak i do woluminu stanowiącego podstawę FileSpace dla FILE MANAGED.

Rzutowanie wartości FILE na BINARY lub STRING, przekazanie jej do funkcji AI lub UDF oraz podglądanie jej w tabeli wyników skutkują odczytem zawartości pliku. Ponieważ metadane są częścią tabeli, ścieżka i rozmiar pliku są widoczne dla każdego, kto może zapytać tabelę, nawet bez dostępu do jej treści.

Aby zobaczyć podgląd plików w wynikach zapytań, zobacz Podgląd plików w kolumnach FILE.

Dlaczego używać FILE zamiast BINARY lub STRING

Poniższa tabela opisuje wyzwania związane z obsługą dużych, nieustrukturyzowanych plików z BINARY typami lub STRING typami:

Typ kolumny Description Diagram
BINARY Materializuje cały obiekt przy każdym odczytie, nawet gdy potrzebujesz tylko metadanych, takich jak rozmiar pliku czy ścieżka. Powoduje to niepotrzebne obliczenia i powolne zapytania. Tabela klipów z kolumną wideo zapisaną jako BINARY. Surowe bajty każdego wielogigabajtowego wideo są materializowane w kolumnie w linii.
STRING Przechowuje ścieżkę pliku bez metadanych, takich jak rozmiar czy informacje o wersji, oraz bez uregulowanego połączenia między tabelą a plikiem. Jeśli inne zadanie usunie plik, tabela zawiera nieaktualne informacje. Jeśli usuniesz wiersz tabeli, plik z referencjami pozostaje w pamięci do czasu usunięcia ręcznie. Tabela klipów z kolumną wideo przechowywaną jako ścieżka w postaci ciągu znaków (STRING), na przykład s3://.../NW-0142. Jedna ze ścieżek nie wskazuje już pliku w woluminie, co pokazuje, że ścieżki zapisane jako ciągi znaków nie gwarantują istnienia plików i że mechanizmy nadzoru nie są z nimi powiązane.

Sumy kontrolne

Pole checksum to token integralności dla bajtów pliku o postaci <prefix>:<digest>. Użyj go do porównania plików lub weryfikacji, że dane się nie zmieniły. Czytniki ignorują sumę kontrolną z nierozpoznanym prefiksem.

Suma kontrolna nie zawsze jest dostępna. to_file funkcja, create_file funkcja i copy_file funkcja uzupełniają sumę kontrolną, gdy magazyn obiektów zwraca obiekt ETAG. list_files funkcja zwracająca tabelę i read_files funkcja zwracająca tabelę nie uzupełniają sumy kontrolnej.

Pole checksum używa jednego z następujących prefiksów:

prefiks Kodowanie digest Description
ETAG Opaque ETag magazynu obiektów dla całego pliku. Dostarczony przez sklep w niezmienionej postaci, używany wyłącznie do sprawdzania równości i niepodlegający ponownemu obliczeniu.
MD5 Mała litera hex Skrót MD5 (RFC 1321), 32 znaki sześciokątne.
CRC32 Mała litera hex Suma kontrolna CRC32 (RFC 2083), 8 znaków sześciokątnych.
CRC32C Mała litera hex Suma kontrolna CRC32C (RFC 3385), 8 znaków szestekowych.
SHA-256 Mała litera hex Skrót SHA-256 (RFC 6234), 64 znaki szesnastkowe.

Na przykład suma kontrolna MD5 wygląda jak MD5:d41d8cd98f00b204e9800998ecf8427e, a znacznik eTag pamięci obiektowej wygląda jak ETAG:"686897696a7c876b7e", łącznie z otaczającymi go podwójnymi cudzysłowami zwracanymi przez pamięć obiektową.

Wybierz pomiędzy FILE i BINARY

Poniższa tabela porównuje opcje pracy z plikami nieustrukturyzowanymi:

Typ kolumny Values Przypadek użycia
FILE Uporządkowane odniesienie do pliku, plus metadane (uri, size, content_type, ). checksum Zastosowanie do zarządzania i przetwarzania plików nieustrukturyzowanych wraz ze strukturyzowanymi danymi oraz do przekazywania plików do wbudowanych i AI funkcji.
BINARY Surowe bajty pliku, wpisane w kolumnę. Zastosowanie dla małych obiektów (domyślnie do 64 KB) przechowywanych bezpośrednio w pliku danych. To przydatne, gdy potrzebujesz niskiego narzutu metadanych i uproszczonego zarządzania plikami. Na przykład użyj tego do przechowywania miniatur w linii z danymi wiersza.

PLIK ZARZĄDZANY i PLIK ZEWNĘTRZNY

Typ ten FILE wspiera dwa podejścia do zarządzania plikami:

  • FILE MANAGED Kolumny kopiują pliki do zarządzanej pamięci. Uprawnienia są uproszczone i zarządzane przez tabelę. Gdy usuwasz wiersze lub aktualizujesz je, by odwoływały się do różnych plików, pliki bez referencji stają się kwalifikowane do zbierania śmieci, więc tabela i jej pliki pozostają zsynchronizowane. Stosuj to podejście dla obciążeń uzyskujących dostęp do plików przez tabelę, takich jak trening ML lub generowanie generowania z dodatkiem wyszukiwania (RAG), oraz dla plików pobieranych z zewnętrznych źródeł. Informacje o wzorcach pozyskiwania danych znajdziesz w sekcji Pozyskiwanie plików jako typ FILE.
  • FILE EXTERNAL kolumny odnoszą się do istniejących plików w tomie katalogu Unity. Pliki są zabezpieczone uprawnieniami woluminów Unity Catalog, ale ich cykl życia nie jest zarządzany przez Unity Catalog i nie są kopiowane. Stosuj takie podejście, gdy musisz odwołać się do plików bez przenoszenia danych lub zakłócania narzędzi odczytujących z istniejącego woluminu.

Azure Databricks zaleca FILE MANAGED dla obciążeń, którym służą uprawnienia na poziomie plików i wbudowane mechanizmy zgodności: dostęp do każdego pliku jest kontrolowany przez tabelę, która się do niego odwołuje, a usunięcie wierszy sprawia, że pliki, do których istnieją odwołania, kwalifikują się do odśmiecania. Używaj FILE EXTERNAL , gdy pliki muszą pozostać na swoich obecnych ścieżkach woluminów dla narzędzi, które odczytują je poza tabelą.

W przypadku zapytań nie ma różnicy między plikami zarządzanymi a zewnętrznymi.

Poniższy diagram pokazuje, jak typ FILE łączy Twój kod z plikami w chmurze obiektowej:

Diagram architektury typu FILE. Klienci Python, SQL, Scala i UDF korzystają z jednego typu FILE, który odczytuje metadane bez pobierania zawartości pliku. FILE MANAGED przechowuje pliki w FileSpace, gdzie dostęp jest kontrolowany na poziomie tabeli, a usunięcie wierszy sprawia, że pliki kwalifikują się do usunięcia przez mechanizm odśmiecania. FILE EXTERNAL odwołuje się do plików w ich istniejących ścieżkach w woluminie UC, do których dostęp jest kontrolowany przez uprawnienia woluminu. Oba tryby przechowują pliki w chmurowej pamięci obiektowej, takiej jak S3, ADLS lub Google Cloud Storage.

FILE MANAGED

FILE MANAGED kolumny przechowują kopie plików w FileSpace, woluminie Unity Catalog, który deklarujesz, aby tabela służyła jako zarządzana pamięć masowa. Ich cykl życia jest powiązany z tabelami, które się do nich odwołują: usuwanie wierszy sprawia, że pliki, do których się odwołują, mogą zostać usunięte w procesie odśmiecania, dzięki czemu tabela i jej pliki pozostają zsynchronizowane.

Poniższe zachowania odnoszą się do FILE MANAGED:

  • Zadeklarowanie FileSpace wymaga właściwości tabeli databricks.filespace-preview.
  • Odczytywanie lub zapisywanie zarządzanego pliku wymaga dostępu zarówno do tabeli, jak i do woluminu, który stanowi podstawę dla FileSpace.
  • Automatyczne zbieranie śmieci plików bez referencji nie jest obsługiwane w wersji beta.

Pliki nieustrukturyzowane przechowywane w zewnętrznych źródłach, takich jak SharePoint, Google Drive, OneDrive i SFTP, muszą zostać zaimportowane jako pliki zarządzane, zanim będzie można ich używać z funkcjami takimi jak ai_parse_document function i funkcje definiowane przez użytkownika (UDF). Informacje o wzorcach pozyskiwania danych zawiera sekcja Pozyskiwanie plików jako typu FILE.

Aby użyć plików zarządzanych, stwórz tabelę z kolumną FILE MANAGED i zadeklaruj wolumin FileSpace , ustawiając właściwość tabeli databricks.filespace-preview na ścieżkę woluminu:

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

Pełne przykłady można znaleźć w poniższych FILE MANAGED przykładach.

przykłady FILE MANAGED

Aby utworzyć tabelę z kolumną FILE MANAGED :

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

Aby dodać kolumnę FILE MANAGED do istniejącej tabeli, ustaw właściwość tabeli databricks.filespace-preview przed dodaniem kolumny, tak jak w następującym kodzie:

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

ALTER TABLE reports ADD COLUMN attachment FILE MANAGED;

Dodanie kolumny FILE MANAGED do tabeli, która nie ma FileSpace, kończy się niepowodzeniem.

Usuń pliki zarządzane bez referencji

Ponieważ automatyczne zbieranie śmieci nie jest obsługiwane, usuń pliki bez referencji samodzielnie. Poniższy notatnik znajduje pliki w FileSpace, do których nie odwołuje się żadna wersja tabeli, i opcjonalnie je usuwa:

Notes odśmiecania pamięci FileType

Pobierz laptopa

FILE EXTERNAL

FILE EXTERNAL kolumny to odniesienia do plików, które już istnieją w woluminie Unity Catalog.

Jeśli masz wymagane uprawnienia na woluminie, możesz je aktualizować lub usuwać. Databricks zaleca używanie plików niezmiennych. Uprawnienie do tabeli udostępnia metadane pliku, ale odczyt bajtów pliku wymaga również uprawnienia READ VOLUME w bazowym woluminie.

Zewnętrzny plik przypisuje każdy wiersz tabeli do pliku pod jego istniejącą ścieżką w woluminie Unity Catalog:

Diagram woluminu UC zawierającego pliki badania uporządkowane w folderach faz, odwzorowane w kolumnie EXTERNAL FILE. Każdy wiersz tabeli odwołuje się do pliku za pomocą jego ścieżki w woluminie i dodaje ustrukturyzowane kolumny, takie jak Cohort i Study Phase.

przykłady FILE EXTERNAL

Aby utworzyć tabelę z kolumną FILE EXTERNAL :

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

Aby dodać kolumnę FILE EXTERNAL do istniejącej tabeli:

ALTER TABLE documents ADD COLUMN file FILE EXTERNAL;

Aby utworzyć i wypełnić tabelę na podstawie woluminu, przypisując każdemu plikowi unikalny identyfikator:

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

Porównanie zarządzania i cyklu życia

Poniższa tabela porównuje, jak FILE MANAGED i FILE EXTERNAL zarządzają dostępem do plików oraz obsługują cykl życia pliku:

Typ kolumny FILE MANAGED FILE EXTERNAL
Kontrola dostępu do plików Kontrolowane przez uprawnienia tabeli i woluminu, takie jak SELECT dla tabeli i READ VOLUME dla woluminu. Zależy od uprawnień zbiorczych, takich jak READ VOLUME.
Cykl życia i zbieranie śmieci Pliki są powiązane z wierszami, które się do nich odwołują. Usunięcie tych wierszy sprawia, że pliki kwalifikują się do zbierania śmieci. Automatyczne zbieranie śmieci nie jest obsługiwane. Sam zarządzasz plikami. Usunięcie wiersza tabeli nie wpływa na plik bazowy w woluminie.

Przypadki użycia typu FILE

Zarówno zarządzane, jak i FILE zewnętrzne typy odpowiadają na następujące wyzwania dotyczące zastosowań danych nieustrukturyzowanych:

Wyzwanie Typ wspierany FILE Benefits
Pliki zbyt duże, by przechowywać je inline jako BINARY FILE MANAGED lub FILE EXTERNAL Kolumna FILE przechowuje odwołanie, więc plik jest odczytywany tylko wtedy, gdy funkcja AI lub UDF go przetwarza. To zapobiega materializowaniu dużych obiektów w linii na stole.
Rozłączony cykl życia i zarządzanie między systemem plików a tabelą FILE MANAGED Azure Databricks wiąże cykl życia każdego pliku z tabelą, więc usunięcie wierszy sprawia, że pliki kwalifikują się do czyszczenia, zamiast zostawiać osierocone pliki w pamięci.
Równoczesne obciążenia wymagające pozostania plików w tym samym miejscu FILE EXTERNAL Pliki pozostają na swoich obecnych ścieżkach woluminów, nie wpływając na cykl życia tabeli, więc inne narzędzia czytające te same pliki nie są zakłócane.

Następne kroki