🏭

Databricks ReposへのpullをAzure Data Factoryで自動化する

2024/01/21に公開

背景

ADF上で「データの前処理->予測->後処理」を行うパイプラインを作成することを考えます。ADFのDatabricksアクティビティを使用することで、Databricks上のNotebookを実行し、予測を行います。Notebookや関連モジュールのコードはGitHubで管理しており、DatabricksのReposにクローンされています。

目的

通常、リモートリポジトリの変更点をDatabrick Reposにpullするためには、Databricks上でGUI操作が必要となります。手動でのpullには以下の問題があります。

  1. リモートリポジトリに変更がある場合、パイプライン実行前にGUIでのpullが毎回必要で手間がかかる
  2. 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,
    '"}'
)

認証

なし

ヘッダー

AcceptAuthorizationを設定します。

  • 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