自動加載常見問題

有關Databricks自動加載程序的常見問題。

自動加載程序再次處理文件時,文件被追加或覆蓋?

文件隻處理一次,除非cloudFiles.allowOverwrites啟用。如果文件被追加或覆蓋,Databricks不保證處理文件的哪個版本。Databricks建議您使用Auto Loader隻攝取不可變文件。如果這不符合您的要求,請與Databricks代表聯係。

如果我的數據文件不是連續到達,而是定期到達,例如每天到達一次,那麼我還應該使用這個源嗎?有什麼好處嗎?

在這種情況下,您可以設置一個觸發器。一次觸發器。AvailableNow(在Databricks Runtime 10.2及更高版本中可用)結構化流作業和計劃在預期的文件到達時間之後運行。自動加載器工作良好,無論是不頻繁或頻繁更新。即使最終的更新非常大,Auto Loader也能很好地適應輸入大小。Auto Loader高效的文件發現技術和模式演化功能使Auto Loader成為增量數據攝取的推薦方法。

如果在重新啟動流時更改檢查點位置會發生什麼?

檢查點位置維護流的重要標識信息。更改檢查點位置有效地意味著您已經放棄了前一個流並開始了一個新的流。

我需要事先創建事件通知服務嗎?

不。如果您選擇了文件通知方式,並提供了相應的權限,Auto Loader可以為您創建文件通知服務。看到什麼是自動加載文件通知模式?

如何清理自動加載器創建的事件通知資源?

您可以使用雲資源管理器列出和刪除資源。您還可以使用雲提供商的UI或api手動刪除這些資源。

我可以在同一個桶/容器上從不同的輸入目錄運行多個流查詢嗎?

是的,隻要它們不是父子目錄;例如,prod-logs /而且prod-logs /使用/不會起作用,因為/使用的子目錄是/ prod-logs

當我的桶或容器上有現有的文件通知時,我可以使用此功能嗎?

可以,隻要您的輸入目錄與現有的通知前綴不衝突(例如,上麵的父子目錄)。

自動加載器如何推斷模式?

當第一次定義DataFrame時,Auto Loader列出您的源目錄並選擇最近的(根據文件修改時間)50gb的數據或1000個文件,並使用這些來推斷您的數據模式。

Auto Loader還通過檢查源目錄結構來推斷分區列,並查找包含/ /關鍵=價值結構。如果源目錄結構不一致,例如:

基地/道路/分區= 1 /日期= 2020-12-31 / file1。base/path/date=2020-12-31/partition=2/file2. Json //不一致,因為日期和分區目錄順序不同。base/path/partition=3/file3.json . Json //不一致,因為日期目錄缺失

Auto Loader將分區列推斷為空。使用cloudFiles.partitionColumns顯式地解析目錄結構中的列。

當源文件夾為空時,自動加載器的行為如何?

如果源目錄為空,Auto Loader要求您提供一個模式,因為沒有數據來執行推斷。

什麼時候自動加載機推斷模式?它是否在每個微批處理後自動進化?

當DataFrame第一次在代碼中定義時,就會推斷出模式。在每個微批處理期間,會動態地評估模式更改;因此,您不需要擔心性能損失。當流重新啟動時,它從模式位置拾取已演進的模式,並開始執行,沒有任何推理開銷。

當使用Auto Loader模式推斷時,對攝取數據的性能有什麼影響?

在初始模式推斷期間,對於非常大的源目錄,模式推斷將花費幾分鍾的時間。否則在流執行期間不應該觀察到顯著的性能下降。如果在Databricks筆記本中運行代碼,可以看到狀態更新,其中指定Auto Loader何時會列出您的目錄,以便對數據模式進行抽樣和推斷。

由於一個錯誤,一個壞文件徹底改變了我的模式。如何回滾架構更改?

請聯係Databricks支持以獲取幫助。