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

Auto Loaderとは?

Auto Loaderは、新しいデータファイルがクラウドストレージに到着すると、追加設定なしで段階的かつ効率的に処理します。

Auto Loaderはどのように機能しますか?

Auto Loader は、新しいデータ ファイルがクラウド ストレージに到着すると、段階的に効率的に処理します。cloudFilesと呼ばれる構造化ストリーミング ソースを提供します。クラウド ファイル ストレージ上の入力ディレクトリ パスを指定すると、 cloudFilesソースは新しいファイルが到着すると自動的に処理し、そのディレクトリ内の既存のファイルも処理するオプションも備えています。Auto Loader Lakeflow Spark宣言型パイプラインでPythonとSQLの両方をサポートしています。

Auto Loaderを使用して、何十億ものファイルを処理し、テーブルを移行または埋め戻すことができます。Auto Loaderは、1時間あたり数百万ものファイルをほぼリアルタイムで取り込むことができます。

サポートされている Auto Loader ソース

Auto Loader は、次のソースからデータ ファイルをロードできます。

  • Amazon S3 (s3://)

  • Azure データレイク Storage (ADLS, abfss://)

  • Google Cloud Storage(GCS、 gs://)

  • Unity Catalogボリューム( /Volumes/

  • Azure Blob Storage (wasbs://)

注記

従来の Windows Azure ストレージ BLOB ドライバー (WASB) は非推奨になりました。 ABFSには、WASBに比べて多くの利点があります。 ABFS に関する Azure のドキュメントを参照してください。レガシ WASB ドライバーの操作に関するドキュメントについては、「 WASB を使用して Azure Blob Storage に接続する (レガシ)」を参照してください。

Auto Loader は、JSONCSVXMLPARQUETAVROORCTEXT、および BINARYFILE ファイル形式を取り込むことができます。

Auto Loader はインジェストの進行状況をどのように追跡しますか?

ファイルが検出されると、そのメタデータはAuto Loaderパイプラインの チェックポイントの場所 にあるスケーラブルなキーバリューストア(RocksDB)に永続化されます。このキーと値のストアにより、データが1回だけ処理されることが保証されます。

障害が発生した場合、チェックポイントの場所に保存されている情報によって中断したところから再開 Auto Loader 、 Delta Lakeにデータを書き込むときにexactly-once保証を提供し続けることができます。 フォールトトレランスや exactly-once セマンティクスを実現するために、自分で状態を維持または管理する必要はありません。

Lakeflow Spark宣言型パイプラインでAuto Loader使用した増分インジェスト

Databricks 、増分データ取り込みのためにLakeFlow Spark宣言型パイプラインのAuto Loader推奨しています。 LakeFlow Spark宣言型パイプラインがパイプラインのこれらの設定を自動的に管理するため、スキーマまたはチェックポイントの場所を指定する必要はありません。 推奨される構成については、 「本番運用ワークロード用のAuto Loaderの構成」を参照してください。

Databricks では、Apache Spark 構造化ストリーミングを使用してクラウドオブジェクトストレージからデータを取り込む場合はAuto Loader の使用を推奨します。API は Python と Scala で利用できます。

Databricks Auto Loader の使用を開始する

Lakeflow Spark宣言型パイプラインでAuto Loader使用して増分データ取り込みの構成を開始するには、次の記事を参照してください。

例: 一般的な Auto Loader パターン

一般的な Auto Loader パターンの例については、「 一般的なデータ読み込みパターン」を参照してください。

Auto Loaderオプションを構成する

Auto Loaderは、データ量、種類、速度に応じて調整することができます。

Auto Loaderオプションの全リストについては、 Auto Loaderオプション」を参照してください。 予期しないパフォーマンスが発生した場合は、 FAQを参照してください。

Auto Loaderファイル検出モードを構成する

Auto Loader は 2 つの ファイル検出モードをサポートしています。 見る:

順不同のデータを処理する

Auto Loaderは、ディレクトリ一覧表示モードまたはファイル通知モードのどちらを使用しているかに関わらず、ファイルの検出または処理の順序を保証するものではありません。順不同で到着するファイルに対応できるよう、パイプラインを設計するには以下の戦略を活用してください。

LakeFlow Spark宣言型パイプライン付き AUTO CDC

Auto LoaderおよびAUTO CDCでLakeFlow Spark宣言型パイプラインを使用する場合は、削除されたレコードが順序外のファイル到着を処理するのに十分な期間保持されるように、トゥームストーンの保持を構成します。 ターゲットストリーミングテーブルのpipelines.cdc.tombstoneGCThresholdInSecondsテーブルプロパティを、イベントの到着からパイプラインの実行までの最大予想遅延時間を超える値に設定します。デフォルトの保存期間は2日間です。詳細については、 create_auto_cdc_flow を参照してください。

LakeFlow Spark宣言型パイプラインを使用しない構造化ストリーミング

Apache Spark構造化ストリーミングをAuto Loaderで直接使用する場合 ( LakeFlow Spark宣言型パイプラインを使用しない)、順序外のデータを処理するために次のパターンを考慮してください。

  • ハード削除よりもソフト削除を優先します。行を削除する代わりに、 deletedフラグとタイムスタンプを追跡することで、後から到着した削除が以前のレコードと競合しないようにします。
  • 更新を適用する前にタイムスタンプを比較する:アップサートを行う際は、受信レコードの更新タイムスタンプとターゲット行の現在のタイムスタンプを比較して、古いデータで上書きされないようにしてください。

ファイルに対して構造化ストリーミングを直接使用する場合に対する Auto Loader の利点

Apache Sparkでは、spark.readStream.format(fileFormat).load(directory)を使用してファイルを段階的に読み取ることができます。Auto Loaderには、ファイルソースに比べて次のような利点があります。

  • スケーラビリティ:Auto Loaderは数十億のファイルを効率的に検出できます。バックフィルは非同期的に実行できるため、コンピューティングリソースの無駄を避けることができます。
  • パフォーマンス:Auto Loaderによるファイル検出のコストは、ファイルが配置される可能性のあるディレクトリの数ではなく、取り込まれるファイルの数に応じて変化します。「ディレクトリ一覧モードでのAuto Loaderの構成」を参照してください。
  • スキーマの推論と進化のサポート: Auto Loader は、スキーマのドリフトを検出し、スキーマの変更が発生したときに通知し、他の方法では無視または失われていたデータをレスキューできます。 「スキーマ推論のしくみAuto Loader」を参照してください。
  • コスト: Auto Loader は、ネイティブ クラウド API を使用して、ストレージに存在するファイルの一覧を取得します。 さらに、 Auto Loaderのファイル通知モードは、ディレクトリのリストを完全に回避することで、クラウドのコストをさらに削減するのに役立ちます。 Auto Loader は、ストレージにファイル通知サービスを自動的に設定して、ファイルの検出を大幅に安くすることができます。