概要
Databricks SDK for Python という アカウント、ワークスペース、関連リソースの操作を行う Python ライブラリを検証したので、その内容を共有します。
Databricks SDK について
概要
Databricks SDK を利用することで、今まで Databricks CLI や REST API 経由で実施してような シークレット作成などをコードにより実行できるようになります。Databricks SDK は次の言語で利用できます。
Databricks Workspace 上で、特に認証設定等を行わずに、Databricks SDK for Python を利用することができました。
Databricks SDK for Python のドキュメントも公開されています。
利用例が Github 上に大量にあり、ほぼ利用ケースを網羅されているため、利用開始に困ることはありませんでした。
検証
インストールと動作確認
%pip install databricks-sdk --upgrade -q
dbutils.library.restartPython()
# 動作確認(クラスターの一覧を表示)
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
for c in w.clusters.list():
print(c.cluster_name)
Databricks トークンの作成
import time
token = w.tokens.create(comment=f'sdk-{time.time_ns()}', lifetime_seconds=300)
print(token.token_info.token_id)
# cleanup
w.tokens.delete(token_id=token.token_info.token_id)
シークレットの登録
from databricks.sdk.core import DatabricksError
# scope 名をセット
scope_name = 'qiita'
# scope を作成
try:
w.secrets.create_scope(scope=scope_name)
except DatabricksError:
print(f"Scope `{scope_name}` already exists!")
# Scoep を確認
scopes = w.secrets.list_scopes()
for scope in scopes:
if scope.name == scope_name:
print(scope.as_dict())
# シークレットの項目名と値をセット
scope_key_and_values = {
"value_01": "qiita_article_01",
"value_02": "qiita_article_02",
}
# シークレットを登録
for key,value in scope_key_and_values.items():
w.secrets.put_secret(
scope=scope_name,
key=key,
string_value=value,
)
# シークレットのリストを表示
scrts = w.secrets.list_secrets(scope=scope_name)
print(scrts)
# シークレットを取得できることを確認
print(dbutils.secrets.get(scope_name,"value_01"))
# シークレットを削除
w.secrets.delete_scope(scope=scope_name)