Auto Loaderとは
Auto Loaderは、新しいデータファイルがクラウドストレージに到着すると、追加設定なしで段階的かつ効率的に処理します。
Auto Loaderの仕組み
Auto Loader は、新しいデータ ファイルがクラウド ストレージに到着すると、段階的かつ効率的に処理します。 これは、 cloudFiles
と呼ばれる構造化ストリーミングソースを提供します。 クラウドファイルストレージ上の入力ディレクトリパスを指定すると、 cloudFiles
ソースは新しいファイルが到着すると自動的に処理し、そのディレクトリ内の既存のファイルも処理するオプションもあります。 Auto LoaderPythonは、SQL の とDelta Live Tables の両方をサポートしています。
Auto Loaderを使用して、何十億ものファイルを処理し、テーブルを移行または埋め戻すことができます。Auto Loaderは、1時間あたり数百万ものファイルをほぼリアルタイムで取り込むことができます。
Supported Auto Loader ソース
Auto Loader は、次のソースからデータ ファイルをロードできます。
Amazon S3 (
s3://
)Azure Data Lake Storage Gen2 (ADLS Gen2、
abfss://
)Google Cloud Storage(GCS、
gs://
)Azure Blob Storage (
wasbs://
)注:
従来の Windows Azure ストレージ BLOB ドライバー (WASB) は非推奨になりました。 ABFSには、WASBに比べて多くの利点があります。 ABFS に関する Azure のドキュメントを参照してください。レガシ WASB ドライバーの操作に関するドキュメントについては、「 WASB を使用して Azure Blob Storage に接続する (レガシ)」を参照してください。
ADLS Gen1 (
adl://
)注:
Azureは、 Azure Data Lake Storage Gen1の保留中の廃止を発表しました。 Databricks では、Azure Data Lake Storage Gen1 から Azure Data Lake Storage Gen2 にすべてのデータを移行することをお勧めします。 まだ移行していない場合は、「 Databricks から Azure Data Lake Storage Gen1 にアクセスする」を参照してください。
Databricks ファイル システム (DBFS、
dbfs:/
)
Auto Loader は、JSON
、CSV
、XML
、PARQUET
、AVRO
、ORC
、TEXT
、および BINARYFILE
ファイル形式を取り込むことができます。
Auto Loaderは取り込みの進行状況をどのように追跡しますか?
ファイルが検出されると、そのメタデータはAuto Loaderパイプラインのチェックポイントの場所にあるスケーラブルなキーバリューストア(RocksDB)に永続化されます。このキーと値のストアにより、データが1回だけ処理されることが保証されます。
障害が発生した場合、Auto Loaderはチェックポイントの場所に保存されている情報によって中断されたところから再開でき、Delta Lakeへのデータの書き込み時に1回限りの保証を提供し続けます。フォールトトレランスや1回限りのセマンティクスを実現するために、自分で状態を維持または管理する必要はありません。
Delta Live TablesでAuto Loaderを使用した増分インジェスト
Databricksは、増分データの取り込みにDelta Live TablesのAuto Loaderを推奨しています。Delta Live Tablesは、Apache Spark Structured Streamingの機能を拡張し、わずか数行の宣言的なPythonまたはSQLを書くだけで、本番品質のデータパイプラインを導入することができます。これによって、以下のことが可能になります。
コンピュートインフラストラクチャのオートスケーリングによるコスト削減
自動スキーマ進化処理
モニタリング via メトリクス in the event log
スキーマやチェックポイントの場所を指定する必要はありません。これは、Delta Live Tables によってパイプラインの設定が自動的に管理されるためです。 「Delta Live Tables を使用したデータの読み込み」を参照してください。
Databricks では、Apache Spark 構造化ストリーミングを使用してクラウドオブジェクトストレージからデータを取り込む場合は常に Auto Loader ことをお勧めします。 APIs は Python と Scala で利用できます。
例: 一般的な Auto Loader パターン
一般的な Auto Loader パターンの例については、「 一般的なデータ読み込みパターン」を参照してください。
Auto Loaderのオプションを設定する
Auto Loaderは、データ量、種類、速度に応じて調整することができます。
Auto Loaderオプションの完全なリストについては、次を参照してください。
予期せぬパフォーマンスに遭遇した場合は、FAQを参照してください。
Auto Loaderのファイル検出モードを設定する
Auto Loaderは2つの ファイル検出モードをサポートしています。以下を参照してください。
ファイルに直接構造化ストリーミングを使用するよりも、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は、ストレージにファイル通知サービスを自動的に設定して、ファイル検出を大幅に低コストにすることができます。