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

Auto Loaderとは?

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

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

Auto Loaderは、新しいデータファイルがクラウドストレージに到着すると、段階的かつ効率的に処理します。cloudFiles と呼ばれる Structured Streaming ソースを提供します。クラウドファイルストレージ上の入力ディレクトリパスが与えられると、cloudFiles ソースは、新しいファイルが到着すると自動的に処理します。そのディレクトリ内の既存のファイルを処理するオプションもあります。Auto Loader は、LakeFlow Pipelines で 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 はインジェストの進行状況をどのように追跡しますか?

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

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

LakeFlow PipelinesでAuto Loaderを使用した増分取り込み

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

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

Databricks Auto Loader の使用を開始する

Auto Loader と Lakeflow パイプラインを使用して増分データ取り込みの設定を開始するには、次の記事を参照してください:

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

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

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

Auto Loader がファイルを読み込んで処理する方法を制御する設定オプションの完全なリファレンスについては、Auto Loaderを参照してください。

Auto Loaderをカスタマイズする

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

予期せぬパフォーマンスが発生した場合は、Auto Loader FAQを参照してください。

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

Auto Loaderは2つのファイル検出モードをサポートしています。デフォルトでは、Auto Loaderはディレクトリリストモードを使用します。ただし、Databricks では、ほとんどのワークロードに対して、ファイルイベントを使用するファイル通知モードを推奨しています。以下を参照してください。

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

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

LakeFlow Pipelines を使用した AUTO CDC

Lakeflow pipelines を Auto Loader および AUTO CDC とともに使用する場合、順不同で到着したファイルを処理するのに十分な期間、削除されたレコードが保持されるように tombstone の保持を設定してください。ターゲットのストリーミングテーブルに pipelines.cdc.tombstoneGCThresholdInSeconds テーブルプロパティを、イベントの到着とパイプラインの実行間の最大予想遅延を超える値に設定してください。default の保持期間は2日間です。詳細については、create_auto_cdc_flowを参照してください。

Structured Streaming without LakeFlow Pipelines

Apache Spark Structured StreamingをAuto Loaderと直接使用する場合(LakeFlow Pipelinesなしで)、順序が乱れたデータを処理するために次のパターンを検討してください。

  • ハード削除よりもソフト削除を優先します。行を削除する代わりに、 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 は、ストレージにファイル通知サービスを自動的に設定して、ファイルの検出を大幅に安くすることができます。