ファイルイベントを用いたAuto Loaderの概要
Auto LoaderのcloudFiles.useManagedFileEventsオプションを使用すると、効率的なファイル検出が可能になります。
ファイル イベントを使用した Auto Loader はどのように機能しますか?
ファイル イベントを備えたAuto Loader 、クラウド ベンダーが提供するファイル イベント通知機能を使用します。 クラウドストレージコンテナを設定することで、新規ファイルの作成や変更などのファイルイベントが発生した際に通知を発行するようにできます。例えば、 Amazon S3 イベント通知では、新しいファイルの到着をトリガーとして、Amazon SNS トピックに通知を送信できます(詳細は、 Amazon S3 通知コンテンツ構造を参照してください)。その後、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 がデータをロードするパスまたはサブディレクトリごとに外部ボリュームを作成し、クラウドパス (例: s3://bucket/path/to/volume ) の代わりにボリュームパス (例: /Volumes/someCatalog/someSchema/someVolume ) を Auto Loader に指定することを推奨しています。これにより、Auto Loaderは最適化されたデータアクセスパターンを使用してボリュームを一覧表示できるため、ファイル検出が最適化されます。
イベント駆動型パイプラインのファイル到着トリガーを検討する
イベント駆動型データ処理の場合は、継続的なパイプラインの代わりにファイル到着トリガーの使用を検討してください。ファイル到着トリガーは、新しいファイルが到着すると自動的にパイプラインを開始し、処理する新しいファイルがある場合にのみクラスターが実行されるため、リソースの使用率とコスト効率が向上します。
連続トリガーで適切な間隔を設定する
Databricksは、ファイル到着トリガーを使用して、ファイルが到着したらすぐに処理することを推奨しています。ただし、 Trigger.ProcessingTimeような連続トリガーを使用してレイテンシを低くする必要がある場合は、Databricks はトリガー間隔を1 minute以上に設定することを推奨します。LakeFlow Spark宣言型パイプラインでは、 pipelines.trigger.intervalを使用してこの値を設定します。 これにより、新しいファイルが到着したかどうかを確認するためのポーリング頻度が低下し、ワークスペースから同時に実行できるストリームの数が増えます。
極めて低い遅延が求められる場合は、従来のファイル通知モードを検討してください。ファイル イベントにより、クラウド ストレージとAuto Loaderの間に追加のキャッシュ ホップが発生し、クラウド キューから直接読み取る場合と比較して遅延が増加する可能性があります。
ファイルイベントを用いたAuto Loaderの制限
- Auto Loaderはパスの書き換えをサポートしていません。 パスの書き換えは、複数のバケットまたはコンテナが DBFS にマウントされている場合に適用されますが、これは非推奨の使用パターンです。
ファイル イベントの制限の一般的なリストについては、 「ファイル イベントの制限」を参照してください。
よくある質問
ファイル イベントを使用した Auto Loader に関するよくある質問への回答を見つけます。
ファイル イベント モードが従来のファイル通知モードよりも優れているのはなぜですか?
この図は、ファイルイベントモードと従来のファイル通知モードを比較したものです。

ファイルイベントモードでは、単一の管理対象ファイルイベントサービスが顧客のクラウドストレージに接続します。これは、 Auto Loaderやトリガーを含む複数のコンシューマーにサービスを提供する、共有のSNSトピック、SQSキュー、およびSNS-to-SQSサブスクリプションを1つ作成します。 従来のファイル通知モードでは、各コンシューマーが独自のイベント購読とキューを必要とするため、バケットごとに複数の独立した通知パイプラインが生成されます。
ファイルイベントモードは、従来のファイル通知モードに比べていくつかの利点があります。基本的には、バケット上のすべての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ファイル イベントが有効になっている外部ロケーションに関連付けられたストレージ資格情報で付与されたアクセス許可を使用します。