1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DatabricksのDelta Live TablesでS3のデータを処理

Last updated at Posted at 2025-04-21

前提

・利用環境:Databricks、AWS
・参考アーキテクチャ
image.png

参考ドキュメント & Blog

目次

  1. Databricksで外部ボリュームを作成
  2. Databricksのカタログを作成し、ストレージを設定
  3. Notebookでメダリオンアーキテクチャ処理を作成
  4. ETLパイプラインを作成
  5. ワークフローを作成

手順

1.Databricksで外部ボリュームを作成

1)「カタログ」→「外部データ」をクリック
image.png
2)「外部ロケーションを作成」をクリック
image.png
3)「AWSクイックスタート」→「次のページ」をクリック
image.png
4)S3のパケット名を入力し、「新規トークンを生成」をクリック
例:
パケット名:s3://ho-iceberg(親パケット)
image.png
5)表示されるトークンをコピーし、「クイックスタートで開始」をクリック
6)遷移されたAWSのスタックのクイック作成画面のDatabricks Personal Access Token欄にコピーしたトークンを貼り付ける
image.png
7)スタック名を適宜変更し、最後の以下をチェックし、「スタックの作成」をクリック
☑︎AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。
image.png
8)Statusが「Create_Complete」になったら、Databricksの外部ロケーション一覧にも反映されてることを確認できる
image.png
image.png
9)外部ロケーションの詳細画面に入り、「接続テスト」をクリックし、成功できるか確認
image.png
10)「権限」→「付与」をクリックし、対象ユーザー、グループに必要な権限を付与
image.png

2.Databricksのカタログを作成し、ストレージを設定

1)「カタログ」→「+」→「カタログを作成」をクリック
image.png
2)上で作成した外部ロケーションを指定して、カタログを作成
例:
カタログ名:ho-cdc
タイプ:Standard
ストレージの場所:上で作成した外部ロケーション
image.png
3)カタログを表示し、「詳細」タブからストレージルートと場所を確認
image.png
4)「スキーマを作成」をクリック
image.png
5)スキーマ名とストレージの場所を指定し、「作成」をクリック
image.png
6)スキーマの詳細画面で、「作成」→「ボリュームを作成」をクリック
image.png
7)下記を参考のS3の外部ボリュームを作成
例:
ボリューム名:raw
ボリュームタイプ:外部ボリューム
外部ロケーション:上で作成したもの
パス:s3://ho-iceberg/raw
image.png
8)AWSのrawパケットに入ってるファイルが同期されてることを確認できる
image.png

3.NotebookでDLTを作成

1)「ワークスペース」→「作成」→「ノートブック」をクリック
image.png
2)デフォルトの言語をSQLに変更し、メダリオンアーキテクチャ用のSQL文を作成
例:
-- Bronzeテーブルに生データを読み込む
CREATE STREAMING TABLE customer_bronze AS SELECT * FROM cloud_files( "/Volumes/ho-cdc/cdc/raw/sales/customer/", "parquet")

-- Bronzeテーブルをクレンジングして、Silverテーブルを作成
CREATE LIVE TABLE customer_silver( CONSTRAINT non_null_name EXPECT (name IS NOT NULL) ON VIOLATION DROP ROW ) AS SELECT * FROM live.customer_bronze

-- ユースケース別にGoldテーブルを作成
CREATE LIVE TABLE customer_gold AS SELECT * FROM live.customer_silver WHERE name = 'John'

image.png

4.パイプラインを作成

1)「パイプライン」→「パイプラインを作成」→「ETLパイプライン」をクリック
image.png
2)下記を参考に設定し、パイプラインを作成
例:
・パイプライン名:ho-pipe
・ソースコード:上で作成したノートブックを選択
・デフォルトカタログ:上で作成したカタログ
・デフォルトスキーマ:上で作成したスキーマ
image.png
image.png
3.「開始」をクリック
image.png
image.png

5.ワークフローを作成

1)「ワークフロー」→「ジョブを作成」をクリック
image.png
2)以下を参考にジョブを設定
例:
・タスク名:ice-job
・種類:パイプライン
・パイプライン:ho-pipe
image.png
3)スケジュールとトリガーを追加
例:
・トリガーステータス:アクティブ
・トリガータイプ:ファイル到着
・ストレージ場所:外部ボリュームのファイルが追加される場所
image.png
4)「今すぐ実行」をクリック
image.png
5)ファイルがS3に到着すると、ジョブが自動的に実行されることを確認できる
image.png

以上

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?