Auto Loader よくある質問

Databricks Auto Loaderに関してよく寄せられる質問 .

ファイルが追加または上書きされたときに、 Auto Loader ファイルを再度処理しますか?

ファイルは、 cloudFiles.allowOverwrites が有効になっていない限り、一度だけ処理されます。 ファイルが追加または上書きされた場合、Databricks はファイルのどのバージョンが処理されるかを保証できません。 また、ファイル通知モードで cloudFiles.allowOverwrites を有効にする場合は、ファイル通知とディレクトリ一覧の両方を使用して新しいファイルを識別する可能性がある Auto Loader 注意する必要があります。 ファイル通知イベント時刻とファイル変更時刻の不一致により、 Auto Loader は 2 つの異なるタイムスタンプを取得し、ファイルが 1 回しか書き込まれない場合でも、同じファイルを 2 回取り込む可能性があります。

一般に、Databricks では、 Auto Loader を使用して不変ファイルのみを取り込み、cloudFiles.allowOverwritesの設定を避けることをお勧めします。 これが要件を満たさない場合は、Databricks アカウント チームにお問い合わせください。

データファイルが継続的に到着するのではなく、定期的に、たとえば1日に1回到着する場合でも、このソースを使用する必要があり、利点はありますか?

この場合、 Trigger.AvailableNow (Databricks Runtime 10.4 LTS 以降で使用可能) 構造化ストリーミング ジョブを設定し、予想されるファイル到着時刻後に実行するようにスケジュールすることができます。 Auto Loader は、更新頻度が低い場合も高い場合も適切に機能します。 最終的な更新が非常に大きい場合でも、Auto Loader は入力サイズに合わせて適切にスケーリングします。 Auto Loader の効率的なファイル検出技術とスキーマ進化機能により、Auto Loader は増分データ取り込みに推奨される方法となっています。

ストリームの再起動時にチェックポイントの場所を変更するとどうなりますか?

チェックポイントの場所は、ストリームの重要な識別情報を保持します。 チェックポイントの場所を変更することは、事実上、前のストリームを破棄して新しいストリームを開始したことを意味します。

事前にイベント通知サービスを作成する必要がありますか?

いいえ。ファイル通知モードを選択し、必要なアクセス許可を指定すると、 Auto Loader によってファイル通知サービスを作成できます。 「 Auto Loader ファイル通知モードとは」を参照してください。

Auto Loaderによって作成されたイベント通知リソースをクリーンアップするにはどうすればよいですか?

クラウド リソース マネージャー を使用して、リソースを一覧表示および破棄できます。これらのリソースは、クラウドプロバイダーのUIまたは APIsを使用して手動で削除することもできます。

同じバケット/コンテナ上の異なる入力ディレクトリから複数のストリーミングクエリーを実行できますか?

はい、親子ディレクトリでない限り実行できます。たとえば、 prod-logs/prod-logs/usage//usage の子ディレクトリであるため、機能しません /prod-logs

バケットまたはコンテナに既存のファイル通知がある場合、この機能を使用できますか?

はい、入力ディレクトリが既存の通知プレフィックス (上記の親子ディレクトリなど) と競合しない限り使用できます。

Auto Loader はどのようにスキーマを推論しますか?

DataFrame が最初に定義されると、 Auto Loader はソース ディレクトリを一覧表示し、最新の (ファイル変更時刻による) 50 GB のデータまたは 1000 個のファイルを選択し、それらを使用してデータ スキーマを推測します。

また、Auto Loader は、ソース ディレクトリ構造を調べてパーティション列を推測し、 /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

Auto Loader パーティション列を空と推論します。 cloudFiles.partitionColumns を使用して、ディレクトリ構造から列を明示的に解析します。

ソースフォルダが空の場合、 Auto Loader はどのように動作しますか?

ソースディレクトリが空の場合は、推論を実行するデータがないため、 Auto Loader スキーマを指定する必要があります。

オートローダーはいつスキーマを推論しますか? マイクロバッチごとに自動的に進化しますか?

スキーマは、DataFrame がコードで最初に定義されたときに推論されます。 各マイクロバッチ中に、スキーマの変更がその場で評価されます。したがって、パフォーマンスへの影響を心配する必要はありません。 ストリームが再起動すると、スキーマの場所から進化したスキーマを取得し、推論によるオーバーヘッドなしで実行を開始します。

Auto Loader スキーマ推論を使用する場合、データを取り込むとパフォーマンスにどのような影響がありますか?

スキーマ推論は、最初のスキーマ推論中に非常に大きなソースディレクトリに対して数分かかることが予想されます。 それ以外の場合、ストリームの実行中にパフォーマンスが大幅に低下することはありません。 Databricks ノートブックでコードを実行すると、データ スキーマのサンプリングと推論のためにディレクトリを一覧表示するタイミングを指定する状態の更新を確認できます Auto Loader 。

バグによって、不適切なファイルが私のスキーマを大幅に変更しました。 スキーマの変更をロールバックするにはどうすればよいですか?

Databricks サポートにお問い合わせください。