尋找關於 Databricks 自動載入器的常見問題解答。
自動載入器是否會在檔案附加或覆寫時再次處理檔案?
使用預設設定 (cloudFiles.allowOverwrites = false), 檔案會完全處理一次。 當檔案附加至或覆寫時,自動載入器無法保證將處理哪個檔案版本。
若要允許自動載入器在附加或覆寫檔案時再次處理檔案,您可以將 設定 cloudFiles.allowOverwrites 為 true。 在此情況下,自動載入器一定會處理最新版本的檔案。 不過,自動載入器無法保證處理哪個中繼版本。
如果您在檔案通知模式中啟用 cloudFiles.allowOverwrites ,請小心。 在檔案通知模式中,自動載入器可能會透過檔案通知和目錄清單來識別新的檔案。 因為檔案通知事件時間和檔案修改時間可能不同,所以自動載入器可能會收到兩個不同的時間戳,並擷取相同的檔案兩次,即使檔案尚未更新也一樣。
啟用cloudFiles.allowOverwrites後,您必須自行處理重複的記錄。 自動載入器在檔案被新增內容或部分更新時,會重新處理整個檔案。 一般而言,Azure Databricks 建議使用自動載入器只內嵌不可變的檔案,並使用預設設定 cloudFiles.allowOverwrites = false。 如果您有進一步的問題,請連絡 Azure Databricks 帳戶小組。
自動載入器如何判斷檔案是否已被輸入?
自動載入器通常只會根據檔案路徑一次性擷取每個檔案。 不過,如果你設定 allowOverwrites 為 true,自動載入器也會利用檔案的最後修改時間戳來判斷檔案是新檔還是已更新需要重新匯入。 請參考「 自動載入器在檔案被附加或覆寫時會重新處理嗎?」
如果我的數據檔未持續送達,但定期間隔,例如,每天一次,我仍應該使用此來源,而且是否有任何好處?
在此情況下,您可以設定 Trigger.AvailableNow [Databricks Runtime 10.4 LTS 及更新版本] 結構化串流作業,並排定在預期的檔案抵達時間之後執行。 自動載入工具適用於無論更新頻繁與否的情況。 即使最終更新規模很大,自動載入器仍能有效地適應輸入大小。 自動載入器有效率的檔案探索技術和架構演進功能,讓自動載入器成為累加式數據擷取的建議方法。
自動載入器如何推斷架構?
第一次定義 DataFrame 時,自動載入器會列出您的來源目錄,並選擇最新的(依檔案修改時間)50 GB 的數據或 1000 個檔案,並使用這些數據來推斷您的數據架構。
自動載入器也會藉由檢查來源目錄結構來推斷分區欄位,並尋找包含 /key=value/ 結構的檔案路徑。 如果來源目錄的結構不一致,例如:
base/path/partition=1/date=2020-12-31/file1.json
// inconsistent because date and partition directories are in different orders
base/path/date=2020-12-31/partition=2/file2.json
// inconsistent because the date directory is missing
base/path/partition=3/file3.json
自動載入器會將分割區數據行推斷為空白。 使用 cloudFiles.partitionColumns 來明確剖析目錄結構中的數據行。
當源資料夾是空的時,自動載入器的行為如何?
如果來源目錄是空的,自動載入器會要求您提供架構,因為沒有任何數據可執行推斷。
自動載入器什麼時候會推斷出 schema? 它會在每個微批次之後自動進化嗎?
當您的程式代碼中第一次定義 DataFrame 時,就會推斷架構。 在每個微批次期間,會即時評估架構變更,因此您不需要擔心效能影響。 當數據流重新啟動時,它會從架構存儲位置挑選演進的架構,並開始執行,而不需要推斷造成的額外負擔。
使用 Auto Loader 架構推斷時,數據導入對效能的影響是什麼?
您可以預期,初始架構推斷期間,針對非常大型的來源目錄,架構推斷可能需要幾分鐘。 在數據流執行期間,您應該不會察覺到顯著的效能下降。 如果您在 Azure Databricks 筆記本中執行程式碼,您可以看到狀態更新,指定自動載入器何時會列出目錄以取樣和推斷數據架構。
由於程式錯誤,不良檔案已大幅變更我的架構。 我該怎麼復原架構變更?
請連絡 Databricks 支援以取得協助。
如果我在重新啟動數據流時變更檢查點位置,會發生什麼事?
檢查點位置會維護數據流的重要識別資訊。 變更檢查點位置實際上表示您已放棄先前的數據流,並啟動新的數據流。
我需要事先建立事件通知服務嗎?
否。 如果您選擇檔案通知模式並提供必要的許可權,自動載入器可以為您建立檔案通知服務。 請參考 「分別管理每個自動載入器串流的檔案通知佇列(經典版)」。
如果在 Unity 目錄的外部位置上啟用檔案事件,檔案事件服務可以在雲端提供者中建立檔案事件,而且您不需要設定自動載入器來建立每個數據流的檔案事件。 請參閱 使用檔案通知模式來處理檔案事件
我可以在同一個貯體/容器上從不同輸入目錄執行多個串流查詢嗎?
是,只要它們不是父子目錄;例如, prod-logs/ 和 prod-logs/usage/ 無法運作,因為 /usage 是 的 /prod-logs子目錄。
當儲存區或容器上已有檔案通知時,我可以使用此功能嗎?
是,只要您的輸入目錄與現有的通知前綴不衝突(例如,上述父目錄和子目錄)。
我可以在 AutoLoader 和其他應用程式之間共用 SQS 佇列嗎?
Databricks 不建議在 AutoLoader 與其他應用程式之間共享 SQS 佇列。 相反地,將你的 S3 事件通知轉發到 SNS 主題,然後為該主題的每個應用程式訂閱獨立的 SQS 隊列。 使用SNS訂閱過濾政策,確保每個隊列只轉發相關訊息。 然後提供專用佇列給自動載入器。
我要如何確認檔案事件是否正確設定?
按一下外部位置頁面上的 測試連線 按鈕。 如果你已正確設定檔案事件,你會在 檔案事件讀取 項目旁看到一個綠色勾號。 如果你只是建立外部位置並在模式下啟用檔案事件 Automatic ,測試會顯示 Skipped ,Azure Databricks 會為該外部位置設定通知。 等待幾分鐘,然後再次按一下「測試連線」。 如果Azure Databricks沒有設定或讀取檔案事件所需的權限,你會看到File Events Read項目出現錯誤。
我可以避免在初次運行時看到完整的目錄列表嗎?
否。 即使 includeExistingFiles 設定為 false,自動載入器也會執行目錄清單,以探索串流啟動之後建立的檔案,並使用檔案事件快取取得最新狀態 (保護快取中的有效讀取位置,並將其儲存在串流的檢查點中)。
我需要設定 cloudFiles.backfillInterval 以避免遺失檔案嗎?
否。 Azure Databricks 先前建議此設定用於經典檔案通知模式,因為雲端儲存通知系統可能導致檔案遺失或延遲抵達。 現在,Azure Databricks 會對外部位置進行完整的目錄列表。 第一個完整目錄列表會在外部位置啟用檔案事件後立即開始。 只要至少有一個自動載入串流使用檔案事件來匯入資料,每次後續的清單都會在上一次完整掃描後 24 小時內進行。
我用提供儲存的隊列設定了檔案事件,但隊列設定錯誤,導致我漏掉了檔案。 我要怎麼確保自動載入器會收錄那些在我的排隊錯誤設定時漏掉的檔案?
首先,確認所提供的佇列錯誤設定是否已修正。 若要檢查,請按一下外部位置頁面上的 測試連線 按鈕。 如果你正確地設定檔案事件,檔案事件讀取項目會顯示綠色勾勾。
Azure Databricks 會對啟用檔案事件的外部位置進行完整的目錄清單。 此目錄清單會探索在錯誤配置期間遺漏的任何檔案,並將它們儲存在檔案事件快取中。
在錯誤設定修復且 Azure Databricks 完成目錄列表後,自動載入器會繼續從檔案事件快取讀取,並自動匯入設定錯誤期間遺漏的檔案。
我該如何從錯誤 CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN 中恢復?
當自動載入器檢查點中儲存的檔案事件服務的延續權杖失效時,會發生此錯誤。
一些常見原因:
-
cloudFiles.useManagedFileEvents被關閉並重新打開。 - 改變源的外部位置或體積。
- 修改所提供的隊列。
- 更改選項
cloudFiles.allowOverwrites或cloudFiles.readChangeFeed。
若要復原:
- 設置
.option("cloudFiles.listOnStart", "true")和.option("cloudFiles.validateOptions", false)於你的串流查詢中。 - 重新開始直播。 自動載入器在啟動時會完整列出目錄,並繞過無效的續寫標記。
- 成功完成微批次後,移除兩個選項並重新啟動串流。
欲了解更多選項資訊 cloudFiles.listOnStart ,請參閱 檔案通知。
如何清理 Auto Loader 所建立的事件通知資源?
您可以使用 雲端資源管理員 來列出和卸除資源。 您也可以使用雲端提供者的UI或 API 手動刪除這些資源。
如何監控 Auto Loader 管線?
自動載入器透過 StreamingQueryListener 揭露關鍵指標,並透過 cloud_files_state() 揭露檔案層級的擷取狀態。 如需監控指標、查詢擷取狀態、建立可觀察性儀表板及排除常見問題的指引,請參閱 「監控與觀察自動載入器」。