共用方式為


什麼是自動載入器目錄清單模式?

自動載入器預設會使用目錄清單模式。 在目錄清單模式中,自動載入器會列出輸入目錄來識別新的檔案。 目錄清單模式可讓您快速啟動自動載入器串流,而不需要存取雲端儲存體上資料以外的任何許可權設定。

如需目錄清單模式的最佳效能,請使用 Databricks Runtime 9.1 或更新版本。 本文說明目錄清單模式的預設功能,以及根據 檔案 語彙順序的優化。

目錄清單模式如何運作?

Azure Databricks 已針對自動載入器優化目錄清單模式,可比其他 Apache Spark 選項更有效率地探索雲端儲存體中的檔案。

例如,如果您每 5 分鐘 /some/path/YYYY/MM/DD/HH/fileName 上傳一次檔案,以尋找這些目錄中的所有檔案,Apache Spark 檔案來源會以平行方式列出所有子目錄。 下列演算法會估計物件儲存體的 API LIST 目錄呼叫總數:

1 (基底目錄) + 365 (每天) * 24 (每小時) = 8761 通話

透過從儲存體接收扁平化回應,自動載入器可減少儲存體中檔案數目的 API 呼叫數目,除以每個 API 呼叫傳回的結果數目,大幅降低您的雲端成本。 下表顯示每個 API 呼叫針對通用物件儲存體所傳回的檔案數目:

每個呼叫傳回的結果 物件儲存體
1000 S3
5000 ADLS Gen2
1024 Gcs

累加式清單(已淘汰)

重要

這個功能已被取代。 Databricks 建議使用 檔案通知模式 ,而不是累加清單。

注意

適用于 Databricks Runtime 9.1 LTS 和更新版本。

增量清單適用于 Azure Data Lake 儲存體 Gen2 ( abfss:// )、S3 ( s3:// ) 和 GCS ( gs:// )。

針對語彙產生的檔案,自動載入器會利用語彙檔案排序和優化清單 API,藉由列出最近擷取的檔案來提升目錄清單的效率,而不是列出整個目錄的內容。

根據預設,自動載入器會藉由檢查和比較先前完成目錄清單的檔案路徑,自動偵測指定的目錄是否適用于累加清單。 為了確保資料在模式中 auto 最終完成,自動載入器會在完成 7 個連續累加清單之後自動觸發完整目錄清單。 您可以藉由設定 cloudFiles.backfillInterval 來觸發指定間隔的非同步回填,來控制完整目錄清單的頻率。

檔案的語彙順序

若要讓檔案依語彙排序,上傳的新檔案必須具有比現有檔案更大的前置詞。 語彙排序目錄的一些範例如下所示。

版本設定的檔案

Delta Lake 會以語彙順序認可資料表交易記錄。

<path-to-table>/_delta_log/00000000000000000000.json
<path-to-table>/_delta_log/00000000000000000001.json <- guaranteed to be written after version 0
<path-to-table>/_delta_log/00000000000000000002.json <- guaranteed to be written after version 1
...

AWS DMS 會以版本設定的方式將 CDC 檔案上傳至 AWS S3。

database_schema_name/table_name/LOAD00000001.csv
database_schema_name/table_name/LOAD00000002.csv
...

日期分割的檔案

檔案可以以日期分割格式上傳。 以下提供一些這類範例:

// <base-path>/yyyy/MM/dd/HH:mm:ss-randomString
<base-path>/2021/12/01/10:11:23-b1662ecd-e05e-4bb7-a125-ad81f6e859b4.json
<base-path>/2021/12/01/10:11:23-b9794cf3-3f60-4b8d-ae11-8ea320fad9d1.json
...

// <base-path>/year=yyyy/month=MM/day=dd/hour=HH/minute=mm/randomString
<base-path>/year=2021/month=12/day=04/hour=08/minute=22/442463e5-f6fe-458a-8f69-a06aa970fc69.csv
<base-path>/year=2021/month=12/day=04/hour=08/minute=22/8f00988b-46be-4112-808d-6a35aead0d44.csv <- this may be uploaded before the file above as long as processing happens less frequently than a minute

使用日期分割上傳檔案時,請記住一些事項如下:

  • 月、日、小時、分鐘必須以零填補,以確保語彙順序(應該上傳為 hour=03 ,而不是 hour=32021/05/03 而不是 2021/5/3 )。
  • 只要處理頻率低於父目錄的時間細微性,檔案就不一定必須在最深層目錄中以語彙順序上傳。

某些可以在日期分割的語彙排序中上傳檔案的服務如下:

變更自動載入器的來源路徑

在 Databricks Runtime 11.3 LTS 和更新版本中,您可以變更以目錄清單模式設定的自動載入器目錄輸入路徑,而不需要選擇新的檢查點目錄。

警告

檔案通知模式不支援此功能。 如果使用檔案通知模式並變更路徑,您可能無法擷取在目錄更新時已存在於新目錄中的檔案。

例如,如果您想要執行每日擷取作業,以從依日組織之目錄結構載入所有資料,例如 /YYYYMMDD/ ,您可以使用相同的檢查點,每天在不同的來原始目錄追蹤擷取狀態資訊,同時維護從所有先前使用之來原始目錄擷取之檔案的狀態資訊。