Important
這項功能位於 測試版 (Beta) 中。 工作區管理員可以從 「預覽 」頁面控制對此功能的存取。 請參閱 管理 Azure Databricks 預覽。
此 FILE 型別儲存一個受控的非結構化檔案參考,並包含路徑與大小等元資料。 在 Unity 目錄中使用 FILE 欄位來存放文件、圖片和音訊,並列結構化資料。
關於類型參考,請參見 FILE 類型。
下圖顯示一個 FILE 命名 video 欄位,與結構化欄位如路線、場景描述及危險標籤並列:
FILE 元資料與儲存
對於每一列,該 FILE 型別會儲存元資料及儲存中對檔案的受控連結。 一個 FILE 值包含 uri、 size、 content_type和 checksum 元資料欄位。 元資料查詢不需要完整讀取檔案,提升查詢效能。
你可以將數值傳FILE給 AI 函式,例如 functionai_parse_document,以及使用者定義函數(UDF)。
下圖展示了一個範例的管理 FILE 欄位,包含路徑與大小的中繼資料,以及對儲存中檔案的參考:
為什麼要用 FILE 而不是 BINARY 或 STRING
下表詳細說明處理大型非結構化檔案時BINARYSTRING的挑戰:
| 欄位類型 | Description | 圖表 |
|---|---|---|
BINARY |
每次讀取都能完整呈現物件,即使你只需要像檔案大小或路徑這類元資料。 這導致不必要的計算和緩慢的查詢。 |
|
STRING |
儲存一個沒有元資料(如大小或版本資訊)的檔案路徑,且資料表與檔案之間沒有受控的連結。 如果其他工作負載移除該檔案,該資料表的資訊會過時。 如果你移除某一列資料表,該參考檔案會一直存在儲存空間,直到你手動移除為止。 |
|
校驗
欄位 checksum 是檔案位元組的完整性標記,形式 <prefix>:<digest>為 。 用它來比較檔案或確認檔案沒有變動。 讀取器會忽略帶有未識別前綴的校驗碼。
校驗碼並不總是有。 當物件儲存回傳 ETAG。copy_fileto_filecreate_file
list_files table-valued 函式 和 read_files table-valued函式 不會填入校驗和。
該 checksum 欄位使用以下其中一個前綴:
| 前綴 | 摘要編碼 | Description |
|---|---|---|
ETAG |
Opaque | 物件儲存的 eTag 是整個檔案的。 由商店逐字提供,僅用於平等比較,且不可重新計算。 |
MD5 |
小寫十六進位 | MD5摘要(RFC 1321),包含32個十六進位字元。 |
CRC32 |
小寫十六進位 | 一個 CRC32 校驗碼(RFC 2083),8 個十六進位字元。 |
CRC32C |
小寫十六進位 | 一個 CRC32C 校驗碼(RFC 3385),8 個十六進位字元。 |
SHA-256 |
小寫十六進位 | 一個 SHA-256 摘要(RFC 6234),64 個十六進位字元。 |
例如,MD5 校驗和看起來像 MD5:d41d8cd98f00b204e9800998ecf8427e,物件儲存 eTag 看起來像 ETAG:"686897696a7c876b7e",包含物件儲存回傳的雙引號。
在 和 之間選擇FILEBINARY
下表比較了處理非結構化檔案的各種選項:
| 欄位類型 | 價值 | 應用案例 |
|---|---|---|
FILE |
一個受控的檔案參考,加上元資料(uri, size, content_typechecksum, )。 |
用於管理與處理結構化檔案與結構化資料,並將檔案傳入內建及 AI 函式。 |
BINARY |
檔案的原始位元組,內嵌在欄位中。 | 用於直接儲存在資料檔中的小型物件(預設最高可達 64 KB)。 當你需要低元資料負擔和簡化檔案管理時,這很有用。 例如,可以用它來儲存與列資料相連的縮圖。 |
外部檔案與檔案管理
此 FILE 類型支援兩種檔案管理方式:
-
FILE EXTERNAL欄位則指向 Unity 目錄卷中現有的檔案。 檔案是由 Unity Catalog 的磁碟權限保護,但它們的生命週期不由 Unity Catalog 管理,也不會被複製。 當你需要參考檔案而不移動資料或干擾從現有磁碟區讀取工具時,請使用此方法。 -
FILE MANAGED欄位將檔案複製到管理儲存空間。 將 table 屬性設databricks.filespace-preview為 Unity Catalog 的管理卷路徑作為儲存。 當你想要簡化權限,並透過表格管理,適用於僅透過表格存取檔案的工作負載時,可以使用此方法,例如機器學習訓練或檢索增強產生(RAG)。 關於擷取模式,請參閱「 檔案擷取」作為檔案類型。
查詢時,外部檔案與受管理檔案並無差別。
下圖展示了該類型如何 FILE 將你的程式碼連接到雲端物件儲存中的檔案:
FILE EXTERNAL
FILE EXTERNAL 欄位是指向已存在於 Unity 目錄卷中的檔案的參考。
如果你擁有該卷所需的權限,就可以更新或刪除這些檔案。 Databricks 建議你使用不可變檔案。 資料表授權會暴露檔案元資料,但讀取檔案位元組也需要對底層磁碟區擁有 READ VOLUME 權限。
外部檔案會將每個資料表列映射到其在 Unity 目錄卷中現有路徑上的檔案:
FILE EXTERNAL 範例
要建立一個有欄位 FILE EXTERNAL 的資料表:
CREATE TABLE documents (id BIGINT, file FILE EXTERNAL);
要將欄位加入 FILE EXTERNAL 現有資料表:
ALTER TABLE documents ADD COLUMN file FILE EXTERNAL;
要從磁碟區建立並填充資料表,並為每個檔案指派唯一 ID:
CREATE TABLE documents AS
SELECT monotonically_increasing_id() AS id, file
FROM list_files('/Volumes/samples/sec/contracts/');
FILE MANAGED
FILE MANAGED 欄位會儲存檔案副本, FileSpace這是一個你為表格宣告作為管理儲存的 Unity 目錄卷。 它們的生命週期與引用它們的表格綁定。
以下行為適用於 FILE MANAGED:
- 宣告 需要
FileSpacetabledatabricks.filespace-preview屬性。 - 讀取或寫入受管理檔案需要同時存取資料表及支援該
FileSpace檔案的磁碟區。 - 不支援自動垃圾回收無參考檔案的功能。
儲存在外部來源如 SharePoint、Google Drive、OneDrive 和 SFTP 的非結構化檔案,必須先以受管檔案形式擷取,才能將它們用於函ai_parse_document式與使用者定義函數(UDF)等函式。 關於擷取模式,請參閱「 檔案擷取」作為檔案類型。
要使用受管理檔案,請建立一個有FILE MANAGED欄位的表格,並透過將 table 屬性設定databricks.filespace-preview為磁碟區路徑來宣告一個磁碟區:FileSpace
'databricks.filespace-preview' = '/Volumes/<catalog>/<schema>/<volume_name>/<optional_path>'
完整範例請參考以下 FILE MANAGED 範例。 檔案 FileSpace 的生命週期與參考它們的列綁定。 刪除這些列後,檔案才有資格進行垃圾回收。
FILE MANAGED 範例
要建立一個有欄位 FILE MANAGED 的資料表:
CREATE TABLE reports (id BIGINT, file FILE MANAGED)
TBLPROPERTIES ('databricks.filespace-preview' = '/Volumes/my_catalog/my_schema/my_managed_volume/');
要在現有資料表中新增 FILE MANAGED 欄位,請先設定 databricks.filespace-preview table 屬性再新增欄位,如下程式碼所示:
ALTER TABLE reports SET TBLPROPERTIES ('databricks.filespace-preview' = '/Volumes/my_catalog/my_schema/my_managed_volume/');
ALTER TABLE reports ADD COLUMN attachment FILE MANAGED;
在沒有FileSpace資料表的表格中新增FILE MANAGED欄位會失敗。
治理與生命週期比較
下表比較了如何FILE EXTERNALFILE MANAGED管理檔案存取及處理檔案生命週期:
| 欄類型 | FILE EXTERNAL |
FILE MANAGED |
|---|---|---|
| 檔案存取控制 | 受卷權權限控制,例如 READ VOLUME。 |
受表與磁碟權限 SELECT (如在表格與 READ VOLUME 磁碟區)權限所控制。 |
| 生命週期與記憶體回收 | 你自己管理檔案。 刪除資料表列不會影響卷內底層檔案。 | 檔案會綁定在參考它們的列上。 刪除這些列後,檔案才有資格進行垃圾回收。 不支援自動垃圾回收。 |
FILE 類型的使用案例
外部型態與受管理 FILE 型態皆針對使用非結構化資料的使用情境,解決了以下挑戰:
| 挑戰 | 支援型態FILE |
Benefits |
|---|---|---|
檔案太大無法內嵌儲存為 BINARY |
FILE MANAGED 或 FILE EXTERNAL |
欄位 FILE 儲存參考資料,因此當 AI 函式或 UDF 處理檔案時,檔案才會被讀取。 這樣可以避免在表格中內嵌出現大型物件。 |
| 檔案系統與資料表間的生命週期與治理斷開 | FILE MANAGED |
Azure Databricks 將每個檔案的生命週期綁定到資料表,因此刪除資料列後,檔案才有資格進行清理,而非將孤立檔案留在儲存空間。 |
| 需要檔案保持在同一位置的同時工作負載 | FILE EXTERNAL |
檔案會維持在現有的卷路徑,不受資料表生命週期影響,因此其他讀取相同檔案的工具不會擾。 |