Databricks ReposへのpullをAzure Data Factoryで自動化する
背景
ADF上で「データの前処理->予測->後処理」を行うパイプラインを作成することを考えます。ADFのDatabricksアクティビティを使用することで、Databricks上のNotebookを実行し、予測を行います。Notebookや関連モジュールのコードはGitHubで管理しており、DatabricksのReposにクローンされています。
目的
通常、リモートリポジトリの変更点をDatabrick Reposにpullするためには、Databricks上でGUI操作が必要となります。手動でのpullには以下の問題があります。
- リモートリポジトリに変更がある場合、パイプライン実行前にGUIでのpullが毎回必要で手間がかかる
- pullをし忘れると古いコードで予測を行ってしまい、再実行が必要となってしまう
今回はこちらを自動化し、常に最新のコードで予測を行うことができるようにするために、リモートリポジトリの変更点をDatabricks Reposにpullする作業をADFパイプラインに組み込むようにしました。
やり方
ADFの「Webアクティビティ」を使ってPatchメソッドを実行します。
1. パラメータの設定
ADFのパラメータを4つ設定しておきます。
databricks_url
DatabricksのURL
azure databricksの場合、https://hogehoge.azuredatabricks.net
databricks_repo_id
対象のDatabircksリポジトリのリポジトリID
確認方法
ワークスペース->Repos->対象リポジトリ名の横にあるブランチ名 をクリックし、以下の画面に遷移
赤枠の部分にリポジトリIDが表示
target_branch
対象のブランチ名
databricks_token
Databricksのアクセストークン
アクセストークンの作成はこちら
2. webアクティビティの設定
webアクティビティのURL、メソッド、本文、認証、ヘッダーを設定します。
URL
@concat(
pipeline().parameters.databricks_url,
'/api/2.0/repos/',
pipeline().parameters.databricks_repo_id
)
メソッド
PATCH
本文
@concat(
'{"branch": "',
pipeline().parameters.target_branch,
'"}'
)
認証
なし
ヘッダー
Accept
とAuthorization
を設定します。
Accept
application/json
-
Authorization
ベアラー認証を使います。
@concat(
'Bearer ',
pipeline().parameters.databricks_token
)
挙動
1. Databricks ReposのブランチがADFで指定したブランチの場合
パイプラインを実行すると、リモートリポジトリの変更点がpullされます。
2. Databricks ReposのブランチがADFで指定したブランチと異なる場合
Databricks Reposのブランチが、ADFのパラメータtarget_branch
で指定したブランチでない場合は、指定したブランチに自動的にチェックアウトされてからpullが行われます。
Discussion