當新資料檔案到達雲雲端儲存體時,自動載入器會以增量方式有效率地處理新資料檔案,無需任何額外設定。
自動載入器如何運作?
自動載入器可在新資料檔案抵達雲端儲存時,逐步有效地進行處理。 它提供名為 cloudFiles的結構化串流來源。 在雲端檔案記憶體上指定輸入目錄路徑, cloudFiles 來源會在新檔案送達時自動處理新檔案,並可選擇同時處理該目錄中的現有檔案。 Auto Loader 在 Lakeflow 管線中支援 Python 和 SQL。
您可以使用自動載入器來處理數十億個檔案,以移轉或回填數據表。 Auto Loader 可調整以支援每小時接近於即時擷取數百萬個檔案。
支援的自動載入器來源
自動載入器可以從下列來源載入資料檔:
Amazon S3 (
s3://)Azure Data Lake Storage(ADLS,
abfss://)Google Cloud Storage (GCS,
gs://)Unity 目錄卷冊(
/Volumes/)Azure Blob 儲存體 (
wasbs://)Note
舊有的 Windows Azure 儲存體 Blob 驅動程式(WASB)已被棄用。 ABFS 對 WASB 有許多好處。 請參見Azure 文件上的 ABFS。 關於使用舊有 WASB 驅動程式的文件,請參見 Connect to Azure Blob 儲存體 with WASB (legacy)。
自動載入器可以匯入JSON、CSV、XML、PARQUET、AVRO、ORC、TEXT和BINARYFILE檔案格式。 自動載入器也支援讀取這些格式的預壓縮檔案。 關於依格式支援的壓縮類型,請參閱 資料格式選項。
測試 版提供,你可以將檔案作為 FILE 參考資料匯入。 例如,你可以在新檔案到來時,持續將目錄中的文件或影像匯入資料表。 請參考「 檔案擷取」作為檔案類型。
自動載入器如何追蹤擷取進度?
當檔案被發現時,它們的元數據會儲存在位於自動載入器管線檢查點位置的可擴展鍵值存放區(RocksDB)中。 此索引鍵/值存放區可確保資料恰好處理一次。
如果發生故障,自動載入器可以利用儲存在檢查點位置的信息來恢復執行,並在將數據寫入 Delta Lake 時繼續提供精確一次的保證。 您無需自行維護或管理任何狀態,即可實現容錯和精確執行一次的語義。
利用 Auto Loader 搭配 Lakeflow 管線進行增量式攝取
Databricks 建議在 Lakeflow pipelines 中使用自動載入器來進行增量資料擷取。 你不需要提供結構或檢查點位置,因為 Lakeflow 管線會自動管理這些管線的設定。 建議配置請參見 「設定生產工作負載的自動載入器 」。
每當您使用 Apache Spark 結構化串流從雲端物件記憶體擷取數據時,Databricks 也會建議自動載入器。 API 支援 Python 和 Scala。
開始使用 Databricks 自動載入器
請參閱以下文章,了解如何開始使用 Auto Loader 搭配 Lakeflow 管線設定增量資料擷取:
範例:常見的自動載入器模式
如需常見自動載入器模式的範例,請參閱 常見的數據載入模式。
設定自動載入器選項
欲完整參考控制自動載入器讀取與處理檔案的設定選項,請參閱 自動載入器。
自訂自動載入器
您可以根據數據量、多樣性和速度調整自動載入器。
- 在 Auto Loader 中設定結構推論與演進:設定 AutoLoader 如何推斷並演進資料的結構,包括處理新的欄位與型別變更。
- 自動類型擴展與自動載入程式
- 為生產工作負載設定自動載入器:優化自動載入器以提升生產環境的可靠性與效能,包括檢查點、錯誤處理及檔案保留管理。
- 原始資料保留:擷取後自動封存或刪除檔案,以降低儲存成本並加速檔案發現。
- 監控並觀察自動載入器:監控關鍵指標、查詢檔案層級的擷取狀態、建立可觀察性儀表板,並排除常見問題。
如果你遇到意外的效能,請參考 自動載入器常見問題。
設定自動載入器檔案偵測模式
自動載入器支援兩種 檔案偵測模式。 預設情況下,自動載入器使用目錄列表模式。 不過,Databricks 建議大多數工作負載使用檔案事件的檔案通知模式。 See:
處理亂序資料
無論你是使用目錄列表或檔案通知模式,自動載入器都無法保證檔案被發現或處理的順序。 請運用以下策略設計你的管線,以應對錯誤順序的檔案到達。
湖流量管線 AUTO CDC
如果你使用 Lakeflow pipelines 搭配 Auto Loader 和 AUTO CDC,請設定墓碑保留期,讓已刪除的記錄保留足夠長的時間,以處理未依順序到達的檔案。 將目標串流表的表格屬性設定 pipelines.cdc.tombstoneGCThresholdInSeconds 為超過事件到達與管線執行之間最大預期延遲的值。 預設的保留期限是兩天。 詳情請參見 create_auto_cdc_flow。
不使用 Lakeflow 管線的結構化串流
如果你直接將 Apache Spark Structured Streaming 與 Auto Loader 搭配使用(不使用 Lakeflow 管線),請考慮使用以下模式來處理亂序資料:
- 偏好軟刪除而非硬刪除:
deleted追蹤旗標與時間戳記,而非移除列,避免遲到的刪除與先前記錄衝突。 - 在套用更新前比較時間戳:在上傳時,將接收記錄的更新時間戳與目標列目前的時間戳比較,以避免被過時的資料覆蓋。
自動載入器相較於直接在檔案上使用結構化串流的優勢
在 Apache Spark 中,您可以使用spark.readStream.format(fileFormat).load(directory)逐步讀取檔案。 自動載入器相較於檔案來源提供以下優勢:
- 延展性:自動載入器可以有效率地探索數十億個檔案。 您可以異步執行回填,以避免浪費任何計算資源。
- 效能:使用自動載入器來探索檔案的成本,會隨著要進入的檔案數目變化,而不是檔案可能落入的目錄數目。 請參見 「在目錄列表模式下配置自動載入器串流」。
- 架構推斷和演進支援:自動載入器可以偵測架構漂移、在架構變更發生時通知您,以及拯救本來會被忽略或遺失的數據。 請參閱 自動載入器架構推斷如何運作?。
- 成本:自動載入器會使用原生雲端 API 來取得記憶體中存在的檔案清單。 此外,自動載入器的檔案通知模式可藉由完全避免目錄清單,協助進一步降低雲端成本。 自動載入器可以在記憶體上自動設定檔案通知服務,讓檔案探索更便宜。