メインコンテンツまでスキップ

ファイルイベントによるAuto Loaderの概要

備考

プレビュー

この機能は パブリック プレビュー段階です。

効率的なファイル検出を実現する Auto Loader のcloudFiles.useManagedFileEventsオプションについて説明します。

ファイル イベントを使用した Auto Loader はどのように機能しますか?

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

次の図はこのパターンを示しています。

クラウドストレージイベント通知システム

Databricks ファイル イベントは、ファイル イベントをリッスンするためのクラウド リソースを設定するサービスです。あるいは、クラウド リソースを自分で設定し、独自のストレージ キューを提供することもできます。

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

次の図はこれらの相互作用を示しています。

ファイルイベント付きAuto Loader

cloudFiles.useManagedFileEventstrueに設定してストリームを初めて実行すると、Auto Loader はロード パスの完全なディレクトリ リストを実行してすべてのファイルを検出し、ファイル イベント キャッシュを最新の状態にします (キャッシュ内の有効な読み取り位置を確保し、それをストリームのチェックポイントに格納します)。Auto Loaderのその後の実行では、保存された読み取り位置を使用してファイル イベント キャッシュから直接読み取ることで新しいファイルを検出し、ディレクトリのリストは必要ありません。

キャッシュからの増分ファイル検出を活用するために、Auto Loader ストリームを少なくとも 7 日ごとに 1 回実行することをお勧めします。Auto Loader を少なくともこの頻度で実行しないと、保存された読み取り位置が無効になり、Auto Loader はファイル イベント キャッシュを最新の状態にするために完全なディレクトリ リストを実行する必要があります。

ファイル イベントを備えた Auto Loader はいつディレクトリ リストを使用しますか?

Auto Loader次の場合に完全なディレクトリ一覧を実行します。

  • 新しいストリームを開始する
  • ディレクトリ一覧または従来のファイル通知からのストリームの移行
  • ストリームのロードパスが変更された
  • ファイルイベントを含むAuto Loader 、7日間以上実行されません
  • 外部ロケーションに更新が行われ、Auto Loader の読み取り位置が無効になります。例としては、ファイル イベントがオフになってから再びオンになるとき、外部ロケーションのパスが変更されるとき、または外部ロケーションに別のキューが提供されるときなどが挙げられます。

Auto Loader includeExistingFilesfalseに設定されている場合でも、最初の実行で常に完全なリストを実行します。 このフラグを使用すると、ストリームの開始時刻以降に作成されたすべてのファイルを取り込むことができます。Auto Loaderディレクトリ全体をリストし、ストリームの開始時刻以降に作成されたすべてのファイルを検出し、ファイル イベント キャッシュ内の読み取り位置を確保して、チェックポイントに保存します。 後続の実行では、ファイル イベント キャッシュから直接読み取られるため、ディレクトリ リストは必要ありません。

また、 Databricksファイル イベント サービスは、外部ロケーションで完全なディレクトリの一覧表示を定期的に実行し、欠落しているファイルがないことを確認します (たとえば、提供されたキューが正しく構成されていない場合)。 外部ロケーションでファイル イベントが有効になるとすぐに、最初の完全なディレクトリのリストが開始されます。 ファイル イベントを使用してデータを取り込む Auto Loader ストリームが少なくとも 1 つ存在する限り、後続のリストは定期的に発生します。

ファイルイベントを使用したAuto Loaderベストプラクティス

ファイル イベントで Auto Loader を使用する場合は、次のベスト プラクティスに従ってパフォーマンスと信頼性を最適化してください。

最適なファイル検出のためにボリュームを使用する

パフォーマンスを向上させるために、 Databricks 、 Auto Loaderデータを読み込むパスまたはサブディレクトリごとに外部ボリュームを作成し、クラウド パス (例: /Volumes/someCatalog/someSchema/someVolume ) ではなくボリューム パス (例: s3://bucket/path/to/volume ) をAuto Loaderに指定することをお勧めします。 これにより、Auto Loader は最適化されたデータ アクセス パターンを使用してボリュームを一覧表示できるため、ファイルの検出が最適化されます。

イベント駆動型パイプラインのファイル到着トリガーを検討する

イベント駆動型データ処理の場合は、継続的なパイプラインの代わりにファイル到着トリガーの使用を検討してください。ファイル到着トリガーは、新しいファイルが到着すると自動的にパイプラインを開始し、処理する新しいファイルがある場合にのみクラスターが実行されるため、リソースの使用率とコスト効率が向上します。

連続トリガーで適切な間隔を設定する

ファイルが到着したらすぐに処理するには、ファイル到着トリガーを使用することをお勧めします。ただし、ユースケースでTrigger.ProcessingTimeのような連続トリガーを使用する必要がある場合は、トリガー間隔を1 minute以上に設定することをお勧めします ( LakeFlow Spark宣言型パイプラインを使用する場合は、 pipelines.trigger.intervalを使用して設定します)。 これにより、新しいファイルが到着したかどうかを確認するポーリング頻度が低下し、ワークスペースから同時に実行できるストリームの数が増えます。

ファイルイベントによるAuto Loaderの制限

  • パスの書き換えはサポートされていません。パス書き換えは、複数のバケットまたはコンテナが DBFS の下にマウントされている場合に使用されますが、これは非推奨の使用パターンです。

ファイル イベントの制限の一般的なリストについては、 「ファイル イベントの制限」を参照してください。

よくある質問

ファイル イベントを使用した Auto Loader に関するよくある質問への回答を見つけます。

ファイル イベントが正しく設定されているかどうかを確認するにはどうすればよいですか?

外部ロケーション ページで [接続テスト] ボタンをクリックします。ファイル イベントが正しく設定されている場合、 ファイル イベントの読み取り 項目に緑色のチェック マークが表示されます。外部ロケーションを作成し、ファイル イベントをAutomaticモードで有効にした場合、 Databricks外部ロケーションの通知を設定している間、テストではSkippedが表示されます。 数分待ってから、もう一度 「接続テスト」 をクリックします。Databricks にファイル イベントの設定または読み取りに必要なアクセス許可がない場合は、 ファイル イベントの読み取り 項目にエラーが表示されます。

初期実行中に完全なディレクトリリストを回避できますか?

いいえ。includeExistingFilesfalseに設定されている場合でも、Auto Loader はディレクトリ リストを実行して、ストリームの開始後に作成されたファイルを検出し、ファイル イベント キャッシュを最新の状態にします (キャッシュ内の有効な読み取り位置を確保し、それをストリームのチェックポイントに格納します)。

ファイルの欠落を回避するには、 cloudFiles.backfillIntervalを設定する必要がありますか?

いいえ。クラウド ストレージ通知システムではファイルが見逃されたり遅れて到着したりする可能性があるため、この設定は従来のファイル通知モードに推奨されていました。現在、 Databricks外部ロケーションで完全なディレクトリのリストを定期的に実行します。 外部ロケーションでファイル イベントが有効になるとすぐに、最初の完全なディレクトリのリストが開始されます。 ファイル イベントを使用してデータを取り込む Auto Loader ストリームが少なくとも 1 つある限り、後続のリストは定期的に表示されます。

提供されたストレージ キューを使用してファイル イベントを設定しましたが、キューの構成が間違っていたため、ファイルが取得できませんでした。キューの構成が誤っていた場合に、見逃されたファイルを Auto Loader が確実に取り込むようにするにはどうすればよいですか?

まず、指定されたキューの誤った構成が修正されていることを確認します。確認するには、外部ロケーション ページの [接続テスト] ボタンをクリックします。ファイル イベントが正しく設定されている場合、 ファイル イベントの読み取り 項目に緑色のチェック マークが表示されます。

Databricksファイル イベントを有効にして、外部ロケーションの完全なディレクトリの一覧表示を実行します。 このディレクトリ リストは、誤った構成期間中に失われたファイルを検出し、ファイル イベント キャッシュに保存します。

誤った構成が修正され、Databricks がディレクトリの一覧表示を完了すると、Auto Loader はファイル イベント キャッシュからの読み取りを継続し、誤った構成期間中に失われたファイルを自動的に取り込みます。

Databricks はどのようにしてクラウド リソースを作成し、キューからメッセージを読み取ったり削除したりするための権限を取得するのでしょうか?

Databricksファイル イベントが有効になっている外部ロケーションに関連付けられたストレージ資格情報で付与されたアクセス許可を使用します。