前提
・利用環境:Databricks、AWS
・参考アーキテクチャ
参考ドキュメント & Blog
目次
- Databricksで外部ボリュームを作成
- Databricksのカタログを作成し、ストレージを設定
- Notebookでメダリオンアーキテクチャ処理を作成
- ETLパイプラインを作成
- ワークフローを作成
手順
1.Databricksで外部ボリュームを作成
1)「カタログ」→「外部データ」をクリック
2)「外部ロケーションを作成」をクリック
3)「AWSクイックスタート」→「次のページ」をクリック
4)S3のパケット名を入力し、「新規トークンを生成」をクリック
例:
パケット名:s3://ho-iceberg(親パケット)
5)表示されるトークンをコピーし、「クイックスタートで開始」をクリック
6)遷移されたAWSのスタックのクイック作成画面のDatabricks Personal Access Token欄にコピーしたトークンを貼り付ける
7)スタック名を適宜変更し、最後の以下をチェックし、「スタックの作成」をクリック
☑︎AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。
8)Statusが「Create_Complete」になったら、Databricksの外部ロケーション一覧にも反映されてることを確認できる
9)外部ロケーションの詳細画面に入り、「接続テスト」をクリックし、成功できるか確認
10)「権限」→「付与」をクリックし、対象ユーザー、グループに必要な権限を付与
2.Databricksのカタログを作成し、ストレージを設定
1)「カタログ」→「+」→「カタログを作成」をクリック
2)上で作成した外部ロケーションを指定して、カタログを作成
例:
カタログ名:ho-cdc
タイプ:Standard
ストレージの場所:上で作成した外部ロケーション
3)カタログを表示し、「詳細」タブからストレージルートと場所を確認
4)「スキーマを作成」をクリック
5)スキーマ名とストレージの場所を指定し、「作成」をクリック
6)スキーマの詳細画面で、「作成」→「ボリュームを作成」をクリック
7)下記を参考のS3の外部ボリュームを作成
例:
ボリューム名:raw
ボリュームタイプ:外部ボリューム
外部ロケーション:上で作成したもの
パス:s3://ho-iceberg/raw
8)AWSのrawパケットに入ってるファイルが同期されてることを確認できる
3.NotebookでDLTを作成
1)「ワークスペース」→「作成」→「ノートブック」をクリック
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'
4.パイプラインを作成
1)「パイプライン」→「パイプラインを作成」→「ETLパイプライン」をクリック
2)下記を参考に設定し、パイプラインを作成
例:
・パイプライン名:ho-pipe
・ソースコード:上で作成したノートブックを選択
・デフォルトカタログ:上で作成したカタログ
・デフォルトスキーマ:上で作成したスキーマ
3.「開始」をクリック
5.ワークフローを作成
1)「ワークフロー」→「ジョブを作成」をクリック
2)以下を参考にジョブを設定
例:
・タスク名:ice-job
・種類:パイプライン
・パイプライン:ho-pipe
3)スケジュールとトリガーを追加
例:
・トリガーステータス:アクティブ
・トリガータイプ:ファイル到着
・ストレージ場所:外部ボリュームのファイルが追加される場所
4)「今すぐ実行」をクリック
5)ファイルがS3に到着すると、ジョブが自動的に実行されることを確認できる
以上