ファイルイベントによるAuto Loaderの概要
Auto LoaderのcloudFiles.useManagedFileEventsオプションを使用すると、効率的なファイル検出が可能になります。
ファイル イベントを使用した Auto Loader はどのように機能しますか?
ファイル イベントを備えた Auto Loader は、クラウド ベンダーが提供するファイル イベント通知機能を使用します。新しいファイルの作成や変更などのファイル イベントが発生したときに通知を公開するようにクラウド ストレージ コンテナーを構成できます。たとえば、 Amazon S3 イベント通知を使用すると、新しいファイルの到着によって Amazon SNS トピックへの通知がトリガーされることがあります。その後、イベントの非同期処理のために Amazon SQS キューを SNS トピックにサブスクライブできます。

Databricks ファイル イベントは、ファイル イベントをリッスンするためのクラウド リソースを設定するサービスです。あるいは、クラウド リソースを自分で設定し、独自のストレージ キューを提供することもできます。
クラウド リソースを構成すると、サービスはファイル イベントをリッスンし、ファイルのメタデータ情報をキャッシュします。Auto Loader cloudFiles.useManagedFileEventsがtrueに設定された状態で実行されているときに、このキャッシュを使用してファイルを検出します。

ストリームが初めて実行され、 cloudFiles.useManagedFileEventsがtrueに設定されている場合、Auto Loader はロード パスのディレクトリ全体を一覧表示してすべてのファイルを検出し、ファイル イベント キャッシュを最新の状態にします (キャッシュ内の有効な読み取り位置を確保し、ストリームのチェック ポイントに保存します)。Auto Loaderの以降の実行では、保存された読み取り位置を使用してファイル イベント キャッシュから直接読み取ることで新しいファイルを検出し、ディレクトリ一覧を必要としません。
Databricks 、キャッシュからの増分ファイル検出を活用するために、少なくとも7日に1回はAuto Loaderストリームを実行することを推奨しています。 少なくともこの頻度でAuto Loaderを実行しないと、保存された読み取り位置が無効になり、Auto Loaderはファイルイベントキャッシュと同期するためにディレクトリ全体のリストを実行する必要があります。
ファイルイベントを使用するAuto Loaderは、どのような場合にディレクトリ一覧表示を使用しますか?
Auto Loader次の場合に完全なディレクトリ一覧を実行します。
- 新しいストリームを開始します。
- ディレクトリ リストまたは従来のファイル通知からストリームを移行します。
- ファイルイベントを使用したAuto Loader 7日間以上実行されません。
- 外部ロケーションを更新した結果、Auto Loader の読み取り位置が無効になりました。例としては、ファイル イベントをオフにして再度オンにする場合、外部ロケーションのパスを変更する場合、または外部ロケーションに別のキューを提供する場合などが挙げられます。
Auto Loader は、 includeExistingFilesがfalseに設定されている場合でも、最初の実行時に必ず完全なリストを実行します。このフラグを使用すると、ストリームの開始時刻以降に作成されたすべてのファイルを取り込むことができます。Auto Loaderディレクトリ全体を一覧表示して、ストリームの開始時刻以降に作成されたすべてのファイルを検出し、ファイルイベントキャッシュに読み取り位置を確立して、それをチェックポイントに保存します。 以降の実行では、ファイルイベントキャッシュから直接読み込むため、ディレクトリ一覧は必要ありません。
Databricksのファイルイベントサービスは、外部ロケーション上のディレクトリ全体を一覧表示して、ファイルの漏れがないことを確認します(たとえば、指定されたキューの設定が間違っている場合など)。外部ロケーションでファイルイベントが有効になるとすぐに、最初の完全なディレクトリ一覧表示が開始されます。少なくとも1つのAuto Loaderストリームがファイルイベントを使用してデータを取り込んでいる限り、以降のリスト作成は前回のフルスキャンから24時間後に行われます。
ファイルイベントを使用したAuto Loaderベストプラクティス
ファイル イベントで Auto Loader を使用する場合は、次のベスト プラクティスに従ってパフォーマンスと信頼性を最適化してください。
最適なファイル検出のためにボリュームを使用する
パフォーマンスを向上させるため、Databricks では Auto Loader がデータをロードするパスまたはサブディレクトリごとに外部ボリュームを作成し、クラウドパス (例: /Volumes/someCatalog/someSchema/someVolume ) の代わりにボリュームパス (例: s3://bucket/path/to/volume ) を Auto Loader に提供することを推奨しています。これにより、Auto Loaderは最適化されたデータアクセスパターンを使用してボリュームを一覧表示できるため、ファイル検出が最適化されます。
イベント駆動型パイプラインのファイル到着トリガーを検討する
イベント駆動型データ処理の場合は、継続的なパイプラインの代わりにファイル到着トリガーの使用を検討してください。ファイル到着トリガーは、新しいファイルが到着すると自動的にパイプラインを開始し、処理する新しいファイルがある場合にのみクラスターが実行されるため、リソースの使用率とコスト効率が向上します。
連続トリガーで適切な間隔を設定する
Databricks では、ファイルが到着したらすぐに処理するために、ファイル到着トリガーを使用することをお勧めします。ただし、ユースケースでTrigger.ProcessingTimeのような連続トリガーを使用する必要がある場合、 Databricksトリガー間隔を1 minute以上に構成することをお勧めします ( LakeFlow Spark宣言型パイプラインを使用する場合はpipelines.trigger.intervalを使用して設定します)。 これにより、新しいファイルが到着したかどうかを確認するポーリング頻度が低下し、ワークスペースから同時に実行できるストリームの数が増えます。
ファイルイベントによるAuto Loaderの制限
- Auto Loaderパスの書き換えをサポートしていません。 パスの書き換えは、複数のバケットまたはコンテナが DBFS にマウントされている場合に適用されますが、これは非推奨の使用パターンです。
ファイル イベントの制限の一般的なリストについては、 「ファイル イベントの制限」を参照してください。
よくある質問
ファイル イベントを使用した Auto Loader に関するよくある質問への回答を見つけます。
ファイル イベント モードが従来のファイル通知モードよりも優れているのはなぜですか?
この図は、ファイルイベントモードと従来のファイル通知モードを比較したものです。

ファイルイベントモードは、従来のファイル通知モードに比べていくつかの利点があります。基本的には、バケット上のすべてのAuto Loaderストリームに対して1つのキューのみを必要とするため、バケットごとの通知制限を回避するのに役立ちます。 詳細については、 「外部ロケーションでファイル イベントが有効になっている場合とない場合のファイル通知モード」を参照してください。
ファイルイベントが正しく設定されていることを確認するにはどうすればよいですか?
外部ロケーションページの 「接続テスト」 ボタンをクリックしてください。ファイルイベントを正しく設定すると、 「ファイルイベント読み取り」 項目に緑色のチェックマークが表示されます。外部ロケーションを作成し、 Automaticモードでファイルイベントを有効にした場合、Databricksが外部ロケーションの通知を設定する間、テストではSkipped表示されます。数分待ってから、もう一度 「接続テスト」 をクリックしてください。Databricksにファイルイベントの設定または読み取りに必要な権限がない場合、 「ファイルイベントの読み取り」 項目にエラーが表示されます。
初回実行時にディレクトリ一覧全体を表示しないようにすることはできますか?
いいえ。includeExistingFilesがfalseに設定されている場合でも、Auto Loader はディレクトリ リストを実行して、ストリームの開始後に作成されたファイルを検出し、ファイル イベント キャッシュを最新の状態にします (キャッシュ内の有効な読み取り位置を確保し、それをストリームのチェックポイントに格納します)。
ファイルが見つからない事態を避けるために、 cloudFiles.backfillIntervalを設定する必要がありますか?
いいえ。Databricksは以前、クラウドストレージの通知システムではファイルの見落としや到着の遅延が発生する可能性があるため、従来のファイル通知モードではこの設定を推奨していました。Databricksは、外部ロケーション上のディレクトリの完全な一覧表示を実行します。外部ロケーションでファイルイベントが有効になるとすぐに、最初の完全なディレクトリ一覧表示が開始されます。少なくとも1つのAuto Loaderストリームがファイルイベントを使用してデータを取り込んでいる限り、以降のリスト作成は前回のフルスキャンから24時間後に行われます。
提供されたストレージキューを使用してファイルイベントを設定しましたが、キューの設定が間違っていたため、ファイルが欠落してしまいました。キューの設定ミスで取り込まれなかったファイルを、Auto Loaderが確実に取り込むようにするにはどうすればよいですか?
まず、提供されたキューの設定ミスが修正されていることを確認してください。確認するには、外部ロケーションページの 「接続テスト」 ボタンをクリックしてください。ファイルイベントを正しく設定すると、 「ファイルイベント読み取り 」項目に緑色のチェックマークが表示されます。
Databricksファイル イベントを有効にして、外部ロケーションの完全なディレクトリの一覧表示を実行します。 このディレクトリ リストは、誤った構成期間中に失われたファイルを検出し、ファイル イベント キャッシュに保存します。
設定ミスが修正され、Databricksがディレクトリ一覧の処理を完了すると、Auto Loaderはファイルイベントキャッシュからの読み取りを継続し、設定ミス期間中に見逃されたファイルを自動的に取り込みます。
Databricksは、クラウド リソースの作成、キューからのメッセージの読み取りと削除を行うための権限をどのように取得するのですか?
Databricksファイル イベントが有効になっている外部ロケーションに関連付けられたストレージ資格情報で付与されたアクセス許可を使用します。