背景・目的
DatabricksのREST APIを使う機会がありましたので、目的別に整理しメモしておきます。
徐々に更新します。
まとめ
- REST APIはこちらを参照してください。
- REST APIにはレート制限があります。それぞれのレート制限はこちらを参照してください。
- 目的別のREST APIは下記のとおりです。(※2023/10/08時点の情報です)
分類 | 目的 | REST API(リファレンス) | 備考 |
---|---|---|---|
Unity Catalog | カタログのリストを取得したい | List catalogs | |
Identity and Access Management | グループの一覧を取得したい | List group details | Public Preview |
ユーザの一覧を取得したい | List users | Public Preview |
概要
基本的な構文
基本的な構文の例を下記に記載します。
curl --request GET "https://${DATABRICKS_HOST}/api/2.0/clusters/get" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--data '{ "cluster_id": "1234-567890-a12bcde3" }'
下記を指定します。
- DATABRICKS_HOST: Databricksのホスト名
- DATABRICKS_TOKEN: アクセストークン
レート制限
DatabricksのREST APIはレート制限があるようです。
- 1秒あたりのレートが設定されています。
- WorkspaceとAPIごとにレートが設定されています。詳細はこちらを参照ください。
- 上限引き上げが可能なものもあります。引き上げる際は、Databricks担当者を通して依頼するようです。
- レート制限に引っかかる場合は、429 Too Many Requestsが返されます。
実践
前提
アクセストークンの取得
REST APIに指定するアクセストークンを取得します。
jqのインストール
必須ではありません。
- REST APIで返されたJSONを見やすくするため、jqをインストールしておきます。
REST API
Unity Catalog
List catalogs
- API
/api/2.1/unity-catalog/catalogs
- サンプル
$ curl --request GET "https://${DATABRICKS_HOST}/api/2.1/unity-catalog/catalogs" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
{
"catalogs": [
{
"name": "main",
"owner": "XXXXX",
"comment": "Main catalog (auto-created)",
"catalog_type": "MANAGED_CATALOG",
"metastore_id": "XXXXXX",
"created_at": 1694869621233,
"created_by": "XXXXX",
"updated_at": 1694869621233,
"updated_by": "XXXXX",
"isolation_mode": "OPEN",
"browse_only": false,
"provisioning_info": {
"state": "ACTIVE"
},
"id": "XXXXXXX",
"full_name": "XXXX",
"securable_type": "CATALOG",
"securable_kind": "CATALOG_STANDARD"
},
{
"name": "system",
"owner": "XXXXX",
"comment": "System catalog (auto-created)",
"catalog_type": "SYSTEM_CATALOG",
"metastore_id": "XXXXXXX",
"created_at": 1694869621052,
"created_by": "XXXXXX",
"updated_at": 1694869621052,
"updated_by": "XXXXXX",
"isolation_mode": "OPEN",
"browse_only": false,
"provisioning_info": {
"state": "ACTIVE"
},
"id": "XXXXXX",
"full_name": "XXX",
"securable_type": "CATALOG",
"securable_kind": "CATALOG_SYSTEM"
}
]
}
$
Identity and Access Management
Groups
List group details
- API
/api/2.0/preview/scim/v2/Groups
- サンプル
※結果は省略しています。
$ curl --request GET "https://${DATABRICKS_HOST}/api/2.0/preview/scim/v2/Groups" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
Users
List users
- API
/api/2.0/preview/scim/v2/Users
- サンプル
※結果は省略しています。
$ curl --request GET "https://${DATABRICKS_HOST}/api/2.0/preview/scim/v2/Users" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
参考