Load data into the Databricks Lakehouse | Databricks on AWS [2023/1/13時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Databricksでは、Delta Lakeを基盤としたレイクハウスにデータをロードする方法を多数取り揃えています。クラウドオブジェクトストレージからのインクリメンタルなデータ取り込みにはAuto Loaderを使うことをお勧めします。データ追加UIでは、クイックにローカルファイルをアップロードしたり、外部データソースに接続するための数多くの選択肢を提供しています。
初めてのETLワークロードを実行する
DatabricksでAuto Loaderをまだ使ったことがないのであれば、チュートリアルからスタートしてください。Databricksで初めてのETLワークロードを実行するをご覧ください。
Auto Loader
Auto Loaderは、追加のセットアップなしにクラウドストレージにデータファイルが新たに到着すると、インクリメンタルかつ効率的に処理を行います。Auto Loaderは、cloudFiles
という構造かストリーミングソースを提供しています。
Delta Live TablesとAuto LoaderによるETLの自動化
Auto LoaderとDelta Live Tablesを用いることで、スケーラブル、インクリメンタルなデータ取り込みのインフラストラクチャのデプロイメントをシンプルにすることができます。Delta Live Tablesではノートブックのような標準的なインタラクティブな処理の実行ではなく、プロダクションに使えるインフラストラクチャのデプロイメントにフォーカスしています。
ローカルデータファイルのアップロードや外部データソースへの接続
テーブルを作成するためにローカルのデータファイルのアップロードや外部ソースからのデータ取り込みをセキュアに行うことができます。Databricksのデータ追加UIを用いたデータのロードをご覧ください。
パートナーインテグレーション
Databricksのパートナーインテグレーションによって、Databricksにデータをロードすることができます。これらのインテグレーションによって、Databricksに様々なソースからローコード、スケーラブルにデータを取り込むことができます。Databricksにおけるインテグレーションをご覧ください。
COPY INTO
COPY INTOを用いることで、SQLユーザーは冪等性を持ち、インクリメンタルにクラウドオブジェクトストレージからDelta Lakeテーブルにデータをロードすることができます。これは、Databricks SQL、ノートブック、Databricksジョブで使用することができます。
Deltaへの変換
Databricksでは、Parquet、IcebergテーブルをDelta Lakeに変換し、レイクハウスのすべての機能を解放する単一のコマンドを提供しています。Delta Lakeへの変換をご覧ください。
いつCOPY INTOを使い、いつAuto Loaderを使うのか
以下にAuto LoaderとCOPY INTOを選択する際に検討すべきいくつかの事柄を示します:
- 数千規模のファイルを取り込もうとしているのであれば
COPY INTO
を使うことができます。一定期間で数百万以上のファイルを予想しているのであれば、Auto Loaderを使ってください。Auto Loaderは、COPY INTOと比較してファイルを検知するオペレーションの総数が少なくて済み、処理を複数のバッチに分割することができ、Auto Loaderは低コストで規模に対して効率的であることを意味します。 - データスキーマが頻繁に進化するのであれば、Auto Loaderはスキーマ推定、進化に関するより良いプリミティブを提供しています。Auto Loaderにおけるスキーマ推定とスキーマ進化の設定をご覧ください。
- 再度アップロードされたファイルのサブセットのロードにおいては、COPY INTOの方が管理が若干簡単です。Auto Loaderを用いる場合、ファイルのサブセットのSELECTを再処理することがより困難となります。しかし、Auto Loaderストリームを同時に実行しながらも、ファイルのサブセットを再ロードするためにCOPY INTOを使うことができます。
Auto LoaderとCOPY INTOの概要とデモンストレーションについては、以下のYouTube動画をご覧ください(2分)。
データをロードするためにデータタブを使う
Data Science & Engineeringのワークスペースのデータタブを用いることで、テーブルを作成するためにローカルにある小規模のファイルをロードすることができます。Explore and create tables in DBFSをご覧ください。
外部ソースからデータをロードするためにApache Sparkを使う
Apache Sparkを用いて様々なデータソースに接続することができます。選択肢の一覧と接続のサンプルに関しては、Databricksにおける外部データの取り扱いをご覧ください。
データ取り込みの際にキャプチャされたファイルメタデータを確認する
Apache Sparkはデータロードの際にソースファイルに関するデータを自動でキャプチャします。ファイルメタデータカラムを用いてこのデータにアクセスすることができます。