Databricks ReposとGitHubを連携する

Azure

Azure DatabricksにはDatabricks Reposという機能があります。ReposではGitHubやAzure DevOpsなどのようなgitリポジトリと同じようにソースコードを管理できます。さらにノートブックやpythonファイルなどを作成・編集・実行することができます。

今回はDtabricks ReposとGitHubを連携して、基本的な機能を試してみたいと思います。

本日の内容は基本的に以下のドキュメントをもとに進めていきます。

環境・条件

以下の内容が準備できている前提で進めていきます。

  • Databricksワークスペースが作成済みである
  • GitHubリポジトリが作成済みで、Databricksで実行可能なファイルがpushされている
  • Databricks、GitHubともに管理者権限がある

Reposの設定

GitHubとのリンク設定

まずはAzure DatabricksとGitリポジトリをリンクさせます。Databricksワークスペースにログインしたら、ユーザー設定から「Linked accounts」を選択します。ここで、リンクさせたいGitプロバイダーの種類を選択します。今回はGitHubを選択していますが、他にも様々なプロバイダーとリンクすることができます。認証については「Link Git account」を選択しLinkボタンをクリックします。

GitHubとのリンクを許可するか聞かれますので、問題なければ「Authorize Databricks」をクリックします。

以下の画面のように「対象のGitプロバイダー(Linked)」と表示されていればリンク設定は完了です。

GitHubへDatabricks GitHubアプリをインストール

Databricks ReposからGitHubにアクセスするためには、事前にGitHubリポジトリにDatabricks GitHubアプリをインストールしておく必要があります。インストールはDatabricks GitHubアプリのインストールページから行います。

すべてのリポジトリか特定のリポジトリかを選択できます。今回はDatabricks Reposのために専用のリポジトリ(db-python)を作成しているので、それを選択してインストールします。

Databricks ReposとGitHubリポジトリを連携する

ここからはDatabricks Reposを追加していきます。「Workspace」>「Repos」の順に選択すると下記のようにメッセージと共に「Add repo」というボタンが表示されるのでクリックして追加します。

連携させたいリポジトリを選択して作成します。この時、「Create repo by cloning a Git repository」にチェックを付けておくと、Repo作成後にGitHubリポジトリのソースコードをDatabricks Reposにクローンします。この時点でGitHubにリポジトリを作成していない場合はチェックを外します。作成後にあとから設定できます。

もし、GitHubにDatabricks GitHubアプリをインストールしていないと、このタイミングで以下のようなエラーが発生するので、事前にアプリをインストールしておいてください。

作成後はWorkspaceのRepos配下に自身のユーザー名のディレクトリが作成されて、さらにその配下にGitHubリポジトリと同じ名前(ここではdb-python)でDatabricksのリポジトリが作成されています。リポジトリの内容はGitHubの内容がクローンされています。

Databricks Reposからの実行

Databricks Reposからpythonファイルやノートブックを直接実行できます。実行するには予めクラスターを作成しておきます。

実際にmain.pyを開いてみると、以下のようなエディター画面が開くので、「Run」をクリックして実行します。結果はOutputに表示されます。Outputの右隣りのTerminalを開くとクラスターに接続できます。

ノートブックも同じように実行できます。

GitHubの変更をDatabricks Reposに反映

両者のリポジトリを連携後に、GitHubでpythonファイルやノートブックを更新した場合はその変更内容をDatabricks Reposへ反映させる必要があります。

Databricks Reposの右上三点リーダーか「Git」を選択します。その後、右上の「Pull」をクリックすることで、最新の状態を反映できます。

Databricks Reposの変更をGitHubに反映

Databricks上でコードを編集した結果をGitHubに反映することができます。適当にファイルを更新したら、pullするときと同じようの三点リーダーからGitをクリックします。あとはいつものgitのようにコミットメッセージを追加してpushします。

ノートブックを実行していて出力結果があるとき、デフォルトの設定では出力結果をgitにcommitすることはできません。「This notebook may have outputs, but they are not included because the workspace administrator disabled committing outputs.」というメッセージが表示されます。

有効にしたい場合は、管理者設定ページからReposの「Allow Repos to Export IPYNB outputs」の設定をAllowに変更して保存します。

その後、もう一度Gitのページを開くと以下のようなメッセージが表示されるので、その横にある「Create commit_outputs config file」をクリックします。

クリックしたら一度ソースコード編集ページに戻り、Fileから画像の下から2番目にある「Commit notebook outputs」を選択します。そしてCommit outputs configurationを「include」に変更して再度Gitページからcommit & pushを行います。

これでノートブックの実行結果もGitHubにpushされます。実際にGitHub側からも以下のように出力結果を確認できるようになります。

まとめ

Databricks ReposはAzure Databricks上に構築できるGitリポジトリです。各種gitプロバイダーとリンクすることができるため、普段使っているgitプロバイダーを使いながら、コードを簡単にDatabricksと連携できます。さらに、Databricks Reposではソースコードの格納だけではなく、作成・編集・実行まで行えます。お互いの変更内容も同期できるので効率的に開発できると思います。

ちなみに、同期に関しては現在手動実行となっています。GitHubに変更をpushしたら、その内容を自動的にDatabricks Reposに反映させることもできます。以下の記事でやり方を紹介しているので、よろしければご覧ください。

コメント