オートローダーとは何ですか?
自動ローダーでは、追加の設定を行わなくても、クラウド ストレージに到着した新しいデータ ファイルが段階的かつ効率的に処理されます。
自動ローダーのしくみはどのようなものですか?
自動ローダーは、新しいデータ ファイルがクラウド ストレージに到着すると、それらを段階的かつ効率的に処理します。 cloudFiles
と呼ばれる構造化ストリーミング ソースを提供します。 クラウド ファイル ストレージ上に入力ディレクトリ パスを指定すると、cloudFiles
ソースでは、新しいファイルが到着したときにそれらが自動的に処理されます。また、そのディレクトリ内の既存のファイルも処理できます。 自動ローダーでは、DLT での Python と SQL の両方がサポートされています。
自動ローダーを使用して、移行する数十億個のファイルを処理したり、テーブルをバックフィルしたりできます。 自動ローダーは、1 時間あたり数百万個のファイルの、ほぼリアルタイムのインジェストをサポートするようにスケーリングされます。
サポートされている自動ローダー ソース
自動ローダーは、次のソースからデータ ファイルを読み込むことができます。
Amazon S3 (
s3://
)Azure Data Lake Storage (ADLS、
abfss://
)Google Cloud Storage (GCS、
gs://
)Azure Blob Storage (
wasbs://
)注意
従来の Windows Azure Storage Blob (WASB) ドライバーは非推奨となっています。 ABFS には WASB よりも多くの利点があります。 ABFS に関する Azure ドキュメントを参照してください。 従来の WASB ドライバーの使用に関するドキュメントについては、「WASB で Azure Blob Storage に接続する (レガシ)」をご覧ください。
Databricks ファイル システム (DBFS、
dbfs:/
)
自動ローダーは、JSON
、CSV
、XML
、PARQUET
、AVRO
、ORC
、TEXT
、および BINARYFILE
のファイル形式を取り込めます。
自動ローダーでは、インジェストの進行状況はどのように追跡されますか?
ファイルが検出されると、そのメタデータは、自動ローダー パイプラインのチェックポイントの場所にあるスケーラブルなキー/値ストア (RocksDB) に保持されます。 このキー/値ストアにより、データは厳密に 1 回だけ処理されます。
エラーが発生した場合、自動ローダーではチェックポイントの場所に格納されている情報に基づいて中断された場所から再開でき、Delta Lake にデータを書き込むときに厳密に 1 回だけという保証を提供し続けられます。 フォールト トレランスや厳密に 1 回だけというセマンティクスを実現するために、状態を自分で維持したり管理したりする必要はありません。
DLT での自動ローダーを使用した増分インジェスト
Databricks では、増分データ インジェストのために DLT の自動ローダーをお勧めします。 DLT は Apache Spark Structured Streaming の機能を拡張し、数行の宣言型 Python または SQL を記述するだけで、運用品質のデータ パイプラインを次のようにデプロイできます。
DLT はパイプラインのこれらの設定を自動的に管理するため、スキーマまたはチェックポイントの場所を指定する必要はありません。 DLT を使用したデータの読み込みのを参照してください。
また、Databricks では、Apache Spark Structured Streaming を使用してクラウド オブジェクト ストレージからデータを取り込むときはいつでも自動ローダーが推奨されます。 API は Python と Scala で使用可能です。
Databricks 自動ローダーを使ってみる
DLT で自動ローダーを使用した増分データ インジェストの構成を開始するには、次の記事を参照してください。
- チュートリアル: サンプル データを使用して、Databricks 上で最初の ETL ワークロードを実行する (Python、SQL ノートブック)
- 自動ローダーを使用してクラウド オブジェクト ストレージからストリーミング テーブルにデータを読み込む (ノートブック: Python、SQL)
例: 一般的な自動ローダーのパターン
一般的な自動ローダー パターンの例については、「一般的なデータ読み込みパターン」を参照してください。
自動ローダーのオプションを構成する
データの量、種類、速度に基づいて自動ローダーを調整できます。
自動ローダー オプションの完全な一覧については、次を参照してください。
予期しないパフォーマンスが発生した場合は、FAQ を参照してください。
自動ローダー ファイル検出モードを構成する
自動ローダーでは、2 つの ファイル検出モードがサポートされています。 参照:
ファイルでの構造化ストリーミングの直接使用より、自動ローダーが優位な点
Apache Spark では、spark.readStream.format(fileFormat).load(directory)
を使用してファイルを増分方式で読み取りできます。 自動ローダーには、ファイル ソースに対して次のベネフィットがあります。
- スケーラビリティ: 自動ローダーでは、数十億のファイルを効率的に検出できます。 コンピューティング リソースの無駄を回避するために、バックフィルを非同期的に実行できます。
- パフォーマンス: 自動ローダーを使用してファイルを検出するコストは、ファイルが格納されている可能性のあるディレクトリの数ではなく、取り込まれているファイルの数に応じて増減します。 自動ローダー ディレクトリリスト表示モードとはを参照してください。
- スキーマの推論と展開のサポート: 自動ローダーでは、スキーマ ドリフトを検出し、スキーマの変更が発生した場合に通知して、通知されなかった場合は無視または失われていたはずのデータを保護できます。 自動ローダー スキーマ推論のしくみを参照してください。
- コスト: 自動ローダーでは、ネイティブ クラウド API を使用して、ストレージに存在するファイルの一覧を取得します。 さらに、自動ローダーのファイル通知モードは、ディレクトリの一覧を完全に回避することで、クラウド コストをさらに削減するのに役立ちます。 自動ローダーを使用すると、ストレージにファイル通知サービスを自動的に設定して、ファイル検出のコストを大幅に削減できます。