Auto Loader よくある質問

Databricks Auto Loaderに関するよくある質問 .

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

cloudFiles.allowOverwritesが有効になっていない限り、ファイルは一度だけ処理されます。ファイルが追加または上書きされた場合、Databricks はファイルのどのバージョンが処理されるかを保証できません。 また、ファイル通知モードでcloudFiles.allowOverwritesを有効にする場合も注意が必要です。 Auto Loader 、ファイル通知とディレクトリ一覧の両方で新しいファイルを識別する可能性があります。 ファイル通知イベント時間とファイル変更時間の間には不一致があるため、 Auto Loader 2 つの異なるタイムスタンプを取得し、ファイルが 1 回しか書き込まれない場合でも、同じファイルを 2 回取り込む可能性があります。

一般に、 Databricks では、 Auto Loader を使用して不変ファイルのみを取り込み、cloudFiles.allowOverwritesの設定を避けることをお勧めします。 これが要件を満たさない場合は、Databricks アカウント チームにお問い合わせください。

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

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

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

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

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

いいえ。ファイル通知モードを選択し、必要なアクセス許可を指定すると、 Auto Loader によってファイル通知サービスを作成できます。 「 Auto Loader ファイル通知モードとは」を参照してください。

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

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

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

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

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

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

Auto Loaderスキーマはどのように推論しますか?

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

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

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

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

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

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

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