こんばんは。
今回はただのメモです。
IT 初心者が Databricks の REST API を勉強していたんですが、かなり時間がかかってしまいました。
とはいえ、頻繁に使うものではないので、多分忘れます。
だから、ここに備忘録を作成しておこうと思います。
この記事が他の人の役に立てば、なお嬉しいことですが、わかっていない人間が書いているものなので、へぇー。くらいに見るようにしてください。
根拠のある部分はソースを記載するつもりですが、ないところは私の想像です。
そもそも REST API がなんなんだ?というところから。
といっても詳しいことはわからないので、何がしたいの?みたいなこと。
Databricks だけのシステムというわけではなく、そういう仕組みがあって、Databricks 用に使えるようにしているというだけのようです。
例えば Databricks のクラスターを同じ設定で作成して、消すだけの仕事をしていたとします。
これを自動化できたらいいなと思いませんか?
人間がマウスでぽちぽちして作るなら、毎回 Databricks の UI (ワークスペース) にアクセスして、クラスターの設定を選択して作成し、出来上がったら消すことをやり続けなければなりません。
しかし、REST API を使用すれば、自動で行う事ができるのです。
プログラムに組み込んで、タイマーでも設定しておけば、多分いける!と、思う。
REST API は、指定されたワークスペースにアクセスして、クラスターを作成するように命令を出します。
ワークスペースは、その命令に従って、クラスターを作成します。
そのために必要な要素は、ワークスペースのインスタンス (アドレス)、認可のためのトークン、作りたいクラスターの情報です。
こんな感じです。
じゃあ、実際に用意していきます。
まずは、今回 Databricks REST API を使用する環境ですが、Azure Cloud Shell の Bash です。
REST API は、Bash のほかに Python などでも使用できますが、今のところはわかりません。
多分必要なことは一緒で、書き方が違うだけだと思います。
ひとまず、Databricks 社のサイトを貼っておきます。
https://docs.databricks.com/api/workspace/introduction
基本的にはこのサイトがメインで進んでいきます。
最初のページに書かれているコマンドがこれです。
curl --request GET "https://${DATABRICKS_HOST}/api/2.0/clusters/get" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--data '{ "cluster_id": "1234-567890-a12bcde3" }'
これは、curl コマンドで、任意のクラスターの情報を取得するための API です。
この API のリファレンスはこちら。
https://docs.databricks.com/api/workspace/clusters/get
curl コマンド自体は、API のためのコマンドというわけではないようです。
その全容はよくわかりませんが、API に使用できるコマンドであるということだけ覚えておけば大丈夫だと思います。
簡単に説明すると、サーバーから情報を取得したり、情報を渡したりすることができるので、API に使用できるという理屈みたいです。
オプションについて
--request <method>
Databricks API で使用できるメソッドを指定します。
(GET, POST, PATCH, DELETE) のいづれかが使用できます。
サンプルコードでは、クラスターの情報を取得するので、GET を使用しています。
どれを使うのかは、それぞれのリファレンスの上部に記載されています。
記載されている URL は、実行するワークスペースのアドレスバーからコピーすればいいです。
https://
その後ろに、/api/...... というのがくっ付きます。
--header
header で、認証情報を入力するために使用します。
"Authorization: Bearer ${DATABRICKS_TOKEN}" は、こういうモノなのでそのまま入力します。
${DATABRICKS_TOKEN} は、ワークスペースで個人用アクセストークンを取得して、その値を入力します。$ も {} も残す必用はなく、全て入れ替えて大丈夫です。
--data
やりたいことに関連する情報を入力します。
サンプルコードでは、クラスターの ID を指定するために入力しています。
このオプション達だけ知っていれば、クラスター作成まではできました。
なので、大体大丈夫なのでは?と思っています。
ちなみに、curl コマンドは Linux で動いているので、コマンドは 1 行で記述する必要があります。
サンプルコードの右端にいくつかある \ という記号は、次の特殊文字の効果を消す役割を持っています。
つまり、Enter キーによる改行を打ち消して、コマンドが 1 行であるようにしているというわけです。
必要な知識はあと一つあるのですが、これは説明が必要なので、今回の記事はここまでにして、続きはパート 2 に記載します。