共用方式為


自動載入器常見問題

Databricks 自動載入器常見問題。

自動載入器是否會在檔案附加或覆寫時再次處理檔案?

除非已啟用,否則 cloudFiles.allowOverwrites 檔案會完全處理一次。 將檔案附加至或覆寫時,Azure Databricks 無法保證將處理哪一個檔案版本。 在檔案通知模式中啟用 cloudFiles.allowOverwrites 時,您也應該小心,其中自動載入器可能會透過檔案通知和目錄清單來識別新的檔案。 由於檔案通知事件時間和檔案修改時間之間的差異,自動載入器可能會取得兩個不同的時間戳,因此即使檔案只寫入一次,也可能會擷取相同的檔案兩次。

一般而言,Databricks 建議您使用自動載入器只內嵌不可變的檔案,並避免設定 cloudFiles.allowOverwrites。 如果不符合您的需求,請連絡 Azure Databricks 帳戶小組。

如果我的數據檔未持續送達,但定期間隔,例如,每天一次,我仍應該使用此來源,而且是否有任何好處?

在此情況下,您可以設定 Trigger.AvailableNow [Databricks Runtime 10.4 LTS 及更新版本] 結構化串流作業,並排程在預期的檔案抵達時間之後執行。 自動載入器適用於不頻繁或頻繁的更新。 即使最終更新非常大,自動載入器仍可調整為輸入大小。 自動載入器有效率的檔案探索技術和架構演進功能,讓自動載入器成為累加式數據擷取的建議方法。

如果我在重新啟動數據流時變更檢查點位置,會發生什麼事?

檢查點位置會維護數據流的重要識別資訊。 變更檢查點位置實際上表示您已放棄先前的數據流,並啟動新的數據流。

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

否。 如果您選擇檔案通知模式並提供必要的許可權,自動載入器可以為您建立檔案通知服務。 請參閱 什麼是自動載入器檔案通知模式?

如何? 清除自動載入器所建立的事件通知資源嗎?

您可以使用 雲端資源管理員 來列出和卸除資源。 您也可以使用雲端提供者的UI或 API 手動刪除這些資源。

我可以在同一個貯體/容器上從不同輸入目錄執行多個串流查詢嗎?

是,只要它們不是父子目錄;例如, prod-logs/prod-logs/usage/ 無法運作,因為 /usage 是 的 /prod-logs子目錄。

當貯體或容器上有現有的檔案通知時,我可以使用此功能嗎?

是,只要您的輸入目錄與現有的通知前置詞不衝突(例如,上述父子目錄)。

自動載入器如何推斷架構?

第一次定義 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 來明確剖析目錄結構中的數據行。

當源資料夾是空的時,自動載入器的行為如何?

如果來源目錄是空的,自動載入器會要求您提供架構,因為沒有任何數據可執行推斷。

自動載入器推斷架構的時機為何? 它會在每個微批次之後自動進化嗎?

當您的程式代碼中第一次定義 DataFrame 時,就會推斷架構。 在每個微批次期間,會實時評估架構變更;因此,您不需要擔心效能命中。 當數據流重新啟動時,它會從架構位置挑選不斷演進的架構,並開始執行,而不需要推斷任何額外負荷。

使用自動載入器架構推斷時,擷取數據的效能有何影響?

您應該預期在初始架構推斷期間,非常大型的來源目錄需要幾分鐘的架構推斷。 在數據流執行期間,您不應該觀察到顯著的效能命中。 如果您在 Azure Databricks 筆記本中執行程式碼,您可以看到狀態更新,指定自動載入器何時會列出目錄以取樣和推斷數據架構。

由於錯誤,錯誤的檔案已大幅變更我的架構。 我該怎麼復原架構變更?

請連絡 Databricks 支援以取得協助。