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

ファイルイベントの概要を含むAuto Loader

備考

プレビュー

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

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

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

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

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

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

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

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

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

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

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

キャッシュには過去 7 日間に変更されたファイルのメタデータのみが保持されるため、Auto Loader を少なくとも 7 日ごとに 1 回実行する場合にのみ増分読み取りをサポートできます。Auto Loader を少なくともこの頻度で実行しないと、保存された読み取り位置が無効になり、Auto Loader はファイル イベント キャッシュを最新の状態にするために完全なディレクトリ リストを実行する必要があります。

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

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

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

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

Databricks ファイル イベント サービスは、24 時間ごとに完全なディレクトリ一覧を実行して、ファイルが欠落していないことを確認します (たとえば、指定されたキューの構成が間違っている場合など)。このスキャンは、ファイル イベントを使用してデータを取り込むAuto Loaderストリームが少なくとも 1 つある限り、ファイル イベントを有効にして外部ロケーションに対して実行されます。

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

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

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

よくある質問

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

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

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

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

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

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

いいえ。クラウド ストレージ通知システムではファイルが見逃されたり遅れて到着したりする可能性があるため、この設定は従来のファイル通知モードに推奨されていました。現在、Databricks は、ファイルの見逃しを回避するために、24 時間に 1 回完全なディレクトリ リストを実行します。

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

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

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

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

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

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