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