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

Auto Loader よくある質問(FAQ)

Databricks Auto Loader に関してよく寄せられる質問の回答をご覧ください。

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

デフォルト設定(cloudFiles.allowOverwrites = false)では、ファイルは一度だけ処理されます。ファイルが追加または上書きされた場合、 Auto Loader はどのファイルバージョンが処理されるかを保証できません。ファイルが追加または上書きされたときに Auto Loader がファイルを再度処理できるようにするには、 cloudFiles.allowOverwritestrueに設定します。 この場合、 Auto Loader はファイルの最新バージョンを処理することが保証されます。 ただし、 Auto Loader はどの中間バージョンが処理されるかを保証することはできません。

ファイル通知モードで cloudFiles.allowOverwrites を有効にする場合は注意してください。ファイル通知モードでは、 Auto Loader ファイル通知とディレクトリ・リストの両方を通じて新しいファイルを識別する場合があります。 ファイル通知イベントの時刻とファイルの変更時刻は異なる場合があるため、 Auto Loader 2 つの異なるタイムスタンプを受け取り、ファイルが更新されていない場合でも同じファイルを 2 回取り込む可能性があります。

cloudFiles.allowOverwritesを有効にすると、重複するレコードを自分で処理する必要があります。Auto Loader は、ファイルが追加されたり、部分的に更新されたりした場合でも、ファイル全体を再処理します。 一般に、 Databricks Auto Loader を使用して不変ファイルのみを取り込むことと、デフォルト設定 cloudFiles.allowOverwrites = falseを使用することをお勧めします。 さらに質問がある場合は、Databricks アカウント チームにお問い合わせください。

Auto Loader は、ファイルが取り込まれたかどうかをどのように判断しますか?

Auto Loader は通常、ファイルパスに基づいて各ファイルを一度だけ取り込みます。ただし、allowOverwritesオプションをtrueに設定すると、Auto Loaderはファイルの最終更新タイムスタンプも使用して、ファイルが新規であるか、更新されて再取り込みが必要かどうかを判断します。「ファイルが追加または上書きされた場合、Auto Loader はファイルを再度処理しますか?」を参照してください。

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

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

スキーマ Auto Loader 推論する方法

データフレームが最初に定義されると、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 ではスキーマを指定する必要があります。

Auto Loaderはいつスキーマを推論しますか?マイクロバッチごとに自動的に進化するのですか?

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

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

スキーマ推論は、初期スキーマ推論中に非常に大きなソース ディレクトリの場合、数分かかることを想定する必要があります。それ以外の場合、ストリームの実行中に大きなパフォーマンス ヒットを観察しないでください。Databricksノートブックでコードを実行すると、データ スキーマのサンプリングと推論のためにディレクトリをリストAuto Loaderタイミングを指定するステータス更新を確認できます。

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

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

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

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

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

いいえ。ファイル通知モードを選択し、必要な権限を付与すると、Auto Loader によってファイル通知サービスが作成されます。「各Auto Loaderのファイル通知キューを個別に管理する (クラシック)」を参照してください。

Unity Catalogの外部ロケーションでファイル・イベントが有効になっている場合、ファイル・イベント・サービスはクラウド・プロバイダーでファイル・イベントを作成できるため、ストリームごとにファイル・イベントを作成するようにAuto Loaderを構成する必要はありません。「ファイルイベントでのファイル通知モードの使用」を参照してください。

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

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

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

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

Auto Loaderと他のアプリケーション間でSQSキューを共有することはできますか?

Databricksは、Auto Loaderと他のアプリケーション間でSQSキューを共有することを推奨していません。代わりに、S3イベント通知をSNSトピックに転送し、各アプリケーションごとに個別のSQSキューをそのトピックにサブスクライブしてください。SNS購読フィルタポリシーを使用して、関連するメッセージのみが各キューに転送されるようにします。次に、 Auto Loaderに専用のキューを提供します。

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

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

最初の実行時に、完全なディレクトリ一覧を回避できますか?

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

ファイルが見つからないことを回避するには、cloudFiles.backfillIntervalを設定する必要がありますか?

いいえ、Databricks では以前、従来のファイル通知モードに対してこの設定を推奨していました。これは、クラウドストレージの通知システムによってファイルが見落とされたり、到着が遅延したりする可能性があったためです。現在、Databricks は外部ロケーションで完全なディレクトリ一覧を実行します。外部ロケーションでファイルイベントが有効になった時点で、最初の完全なディレクトリ一覧が開始されます。ファイルイベントを使用してデータを取り込むAuto Loaderストリームが少なくとも1つ存在する限り、後続の各リスト作成は最後のフルスキャンから24時間後に行われます。

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

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

Databricks は、ファイルイベントが有効になっている外部ロケーションに対して、完全なディレクトリ一覧を行います。このディレクトリ一覧は、設定ミス期間中に見逃されたファイルを検出し、それらをファイル イベント キャッシュに格納します。

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

CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKENエラーから復旧するにはどうすればよいですか?

このエラーは、ファイル イベント サービスのAuto Loaderチェックポイントに保存されている継続が無効になった場合に発生します。

一般的な原因としては、以下のようなものがあります。

  • cloudFiles.useManagedFileEvents 電源が切れてから再び入った。
  • ソースの外部位置またはボリュームの変更。
  • 提供されたキューの変更。

回復するには:

  1. ストリーミングクエリで.option("cloudFiles.listOnStart", "true").option("cloudFiles.validateOptions", false)を設定してください。
  2. ストリームを再開してください。Auto Loaderは起動時にディレクトリ一覧を完全に取得し、無効な継続トークンを回避します。
  3. マイクロバッチ処理が正常に完了したら、両方のオプションを削除してストリームを再起動してください。

cloudFiles.listOnStartオプションの詳細については、 「ファイル通知」を参照してください。

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

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

このページの見出し