概要
データ基盤づくりの最初の一歩は、外部のファイルをテーブルに取り込むことです。Databricks には、増分で取り込むための仕組みとして Auto Loader と COPY INTO が用意されています。
どちらも「すでに取り込んだファイルは二度取り込まない」ことが要点です。データの量や運用の仕方に応じて使い分けます。
押さえるべきポイント
一、Auto Loader で新しいファイルだけを取り込む
Auto Loader は spark.readStream.format("cloudFiles") で使うストリーミングのソースです。処理済みのファイルをチェックポイントで管理し、新しく届いたファイルだけを取り込みます。スキーマの推論や、列の追加などスキーマの変化への追従にも対応しています。
二、COPY INTO は SQL で手軽に取り込める
COPY INTO は SQL のコマンドです。読み込み済みのファイルを記録しているため、同じコマンドを再実行しても二重に取り込みません(冪等)。ソースのファイルは削除されません。
三、availableNow トリガーで増分バッチにする
ストリーミングのクエリに trigger(availableNow=True) を指定すると、その時点で届いているデータをすべて処理してから停止します。ジョブで定期的に実行すれば、ストリーミングの仕組みのまま、バッチのように運用できます。
四、まず生データを Bronze に保存する
取り込んだデータは、加工せずにそのまま Bronze レイヤーに保存しておくのが一般的です。後から変換をやり直したり、問題を調べたりするときに、元のデータに戻れます。
重要な用語
| 用語 | 意味 |
|---|---|
| Auto Loader | クラウドストレージに届く新しいファイルを、増分で取り込む仕組み(cloudFiles ソース)。 |
| COPY INTO | ファイルをテーブルに読み込む SQL コマンド。読み込み済みのファイルはスキップされる。 |
| チェックポイント | ストリーミングの処理がどこまで進んだかを記録する場所。 |
| スキーマ進化 | 列の追加など、データの構造の変化に合わせてテーブルのスキーマを更新すること。 |
| availableNow | 利用可能なデータをすべて処理したら停止する、ストリーミングのトリガー。 |
おすすめの教材
いずれも公式の情報です。内容は更新されることがあるため、最新の版を確認してください。
問題で確かめる
- Data Engineer Associate 問題集分野:データ取り込み(2問)この分野を解く