3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Databricks SDK for Python を試してみた

Posted at

概要

Databricks SDK for Python という アカウント、ワークスペース、関連リソースの操作を行う Python ライブラリを検証したので、その内容を共有します。

Databricks SDK について

概要

Databricks SDK を利用することで、今まで Databricks CLI や REST API 経由で実施してような シークレット作成などをコードにより実行できるようになります。Databricks SDK は次の言語で利用できます。

Databricks Workspace 上で、特に認証設定等を行わずに、Databricks SDK for Python を利用することができました。

image.png

Databricks SDK for Python のドキュメントも公開されています。

image.png

引用元:Databricks SDK for Python (Beta) — Databricks SDK for Python alpha documentation (databricks-sdk-py.readthedocs.io)

利用例が Github 上に大量にあり、ほぼ利用ケースを網羅されているため、利用開始に困ることはありませんでした。

image.png

引用元:databricks-sdk-py/examples/secrets/list_acls_secrets.py at main · databricks/databricks-sdk-py (github.com)

検証

インストールと動作確認

%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)

image.png

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)

image.png

シークレットの登録

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)

image.png

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?