什麼是自動載入器?
當新資料檔案到達雲雲端儲存體時,自動載入器會以增量方式有效率地處理新資料檔案,無需任何額外設定。
自動載入器如何運作?
自動載入器會在抵達雲端記憶體時,以累加且有效率的方式處理新的數據檔。 它提供名為 cloudFiles
的結構化串流來源。 在雲端檔案記憶體上指定輸入目錄路徑, cloudFiles
來源會在新檔案送達時自動處理新檔案,並可選擇同時處理該目錄中的現有檔案。 自動載入器同時支援 Delta 實時資料表中的 Python 和 SQL。
您可以使用自動載入器來處理數十億個檔案,以移轉或回填數據表。 自動載入器調整以支援每小時近即時擷取數百萬個檔案。
支援的自動載入器來源
自動載入器可以從下列來源載入資料檔:
Amazon S3 (
s3://
)Azure Data Lake Storage Gen2 (ADLS Gen2,
abfss://
)Google Cloud Storage (GCS,
gs://
)Azure Blob 儲存體 (
wasbs://
)注意
舊版 Windows Azure 儲存體 Blob 驅動程式 (WASB) 已被取代。 ABFS 對 WASB 有許多好處。 請參閱 ABFS 上的 Azure 檔。 如需使用舊版 WASB 驅動程式的檔,請參閱使用 WASB 連線到 Azure Blob 儲存體(舊版)。
ADLS Gen1 (
adl://
)注意
Azure 已宣布即將淘汰 Azure Data Lake Storage Gen1。 Databricks 建議將所有數據從 Azure Data Lake Storage Gen1 遷移至 Azure Data Lake Storage Gen2。 如果您尚未移轉,請參閱 從 Azure Databricks 存取 Azure Data Lake Storage Gen1。
Databricks 檔案系統 (DBFS,
dbfs:/
)。
自動載入器可以擷JSON
取 、CSV
、XML
PARQUET
、、AVRO
、ORC
、 TEXT
和 BINARYFILE
檔案格式。
自動載入器如何追蹤擷取進度?
探索到檔案時,其元數據會保存在自動載入器管線檢查點位置的可調整索引鍵/值存放區 (RocksDB) 中。 此索引鍵/值存放區可確保數據剛好處理一次。
如果發生失敗,自動載入器可以從儲存在檢查點位置的信息繼續執行,並在將數據寫入 Delta Lake 時繼續提供完全相同的保證。 您不需要自行維護或管理任何狀態,即可達成容錯或完全一次的語意。
搭配差異實時數據表使用自動載入器累加擷取
Databricks 建議差異實時數據表中的自動載入器進行累加式數據擷取。 Delta Live Tables 擴充 Apache Spark 結構化串流中的功能,並可讓您撰寫幾行宣告式 Python 或 SQL,以使用下列專案來部署生產質量的數據管線:
您不需要提供架構或檢查點位置,因為 Delta Live Tables 會自動管理管線的這些設定。 請參閱 使用差異實時數據表載入資料。
每當您使用 Apache Spark 結構化串流從雲端物件記憶體擷取數據時,Databricks 也會建議自動載入器。 API 可在 Python 和 Scala 中使用。
開始使用 Databricks 自動載入器
請參閱下列文章,以開始使用自動載入器搭配差異即時資料表來設定累加式數據擷取:
範例:常見的自動載入器模式
如需常見自動載入器模式的範例,請參閱 常見的數據載入模式。
設定自動載入器選項
您可以根據數據量、多樣性和速度調整自動載入器。
如需自動載入器選項的完整清單,請參閱:
如果您遇到非預期的效能,請參閱 常見問題。
設定自動載入器檔案偵測模式
自動載入器支援兩種 檔案偵測模式。 請參閱:
自動載入器在檔案上直接使用結構化串流的優點
在 Apache Spark 中,您可以使用 累加 spark.readStream.format(fileFormat).load(directory)
讀取檔案。 自動載入器提供下列檔案來源的優點:
- 延展性:自動載入器可以有效率地探索數十億個檔案。 您可以異步執行回填,以避免浪費任何計算資源。
- 效能:使用自動載入器來探索檔案的成本會隨著所擷取的檔案數目,而不是檔案可能落入的目錄數目。 請參閱 什麼是自動載入器目錄清單模式?。
- 架構推斷和演進支援:自動載入器可以偵測架構漂移、在架構變更發生時通知您,以及拯救本來會被忽略或遺失的數據。 請參閱 自動載入器架構推斷如何運作?。
- 成本:自動載入器會使用原生雲端 API 來取得記憶體中存在的檔案清單。 此外,自動載入器的檔案通知模式可藉由完全避免目錄清單,協助進一步降低雲端成本。 自動載入器可以在記憶體上自動設定檔案通知服務,讓檔案探索更便宜。