获取所有数据块工作区集群中已安装库的列表
Get the list of installed libraries across all databricks workspace clusters
如何获取安装在 databricks 工作区的每个集群上的所有库的列表。我有一个场景,其中超过 20 个集群 运行 在单个工作区上,因此正在寻找一种使用脚本
获取此信息的方法
检查了 Workspace CLI 选项,但似乎没有提供所需的信息。
在输出中寻找 4 列,即名称、类型、状态和来源,如下所示
您需要使用专用的 Libraries API for that. Specifically, Cluster Status 命令,它会为您提供已安装库及其状态的列表(来自文档的示例):
{
"cluster_id": "11203-my-cluster",
"library_statuses": [
{
"library": {
"jar": "dbfs:/mnt/libraries/library.jar"
},
"status": "INSTALLED",
"messages": [],
"is_library_for_all_clusters": false
},
{
"library": {
"pypi": {
"package": "beautifulsoup4"
},
},
"status": "INSTALLING",
"messages": ["Successfully resolved package from PyPI"],
"is_library_for_all_clusters": false
}
]
}
您可以按照以下步骤实现。
Step-01:根据以下python代码获取可用集群及其各自cluster-id
的列表,并为[=12创建列表=]
from databricks_cli.sdk.api_client import ApiClient
from databricks_cli.clusters.api import ClusterApi
from pyspark.sql.functions import from_json, col
from pyspark.sql import functions as F
apiclient = ApiClient(token = dbutils.entry_point.getDbutils().notebook().getContext().apiToken().get(),
host = dbutils.entry_point.getDbutils().notebook().getContext().apiUrl().get())
cluster_api = ClusterApi(apiclient)
import json
cluster_list = cluster_api.list_clusters()
rdd = sc.parallelize(cluster_list['clusters']).map(lambda x: json.dumps(x))
raw_clusters_df = spark.read.json(rdd)
parsed_clusters_df = raw_clusters_df.select(
'cluster_name',
'cluster_id').orderBy('cluster_name', ascending=True)
display(parsed_clusters_df)
Step-02 :您可以迭代此列表并将每个它的每个 cluster-id 传递给 library API
%sh
export DATABRICKS_TOKEN=<Personal Access Token>
curl -X GET --header "Authorization: Bearer $DATABRICKS_TOKEN" \
curl --netrc --request GET 'https://instance-id/api/2.0/libraries/cluster-status?cluster_id=clusterid'
如何获取安装在 databricks 工作区的每个集群上的所有库的列表。我有一个场景,其中超过 20 个集群 运行 在单个工作区上,因此正在寻找一种使用脚本
获取此信息的方法检查了 Workspace CLI 选项,但似乎没有提供所需的信息。
在输出中寻找 4 列,即名称、类型、状态和来源,如下所示
您需要使用专用的 Libraries API for that. Specifically, Cluster Status 命令,它会为您提供已安装库及其状态的列表(来自文档的示例):
{
"cluster_id": "11203-my-cluster",
"library_statuses": [
{
"library": {
"jar": "dbfs:/mnt/libraries/library.jar"
},
"status": "INSTALLED",
"messages": [],
"is_library_for_all_clusters": false
},
{
"library": {
"pypi": {
"package": "beautifulsoup4"
},
},
"status": "INSTALLING",
"messages": ["Successfully resolved package from PyPI"],
"is_library_for_all_clusters": false
}
]
}
您可以按照以下步骤实现。
Step-01:根据以下python代码获取可用集群及其各自cluster-id
的列表,并为[=12创建列表=]
from databricks_cli.sdk.api_client import ApiClient
from databricks_cli.clusters.api import ClusterApi
from pyspark.sql.functions import from_json, col
from pyspark.sql import functions as F
apiclient = ApiClient(token = dbutils.entry_point.getDbutils().notebook().getContext().apiToken().get(),
host = dbutils.entry_point.getDbutils().notebook().getContext().apiUrl().get())
cluster_api = ClusterApi(apiclient)
import json
cluster_list = cluster_api.list_clusters()
rdd = sc.parallelize(cluster_list['clusters']).map(lambda x: json.dumps(x))
raw_clusters_df = spark.read.json(rdd)
parsed_clusters_df = raw_clusters_df.select(
'cluster_name',
'cluster_id').orderBy('cluster_name', ascending=True)
display(parsed_clusters_df)
Step-02 :您可以迭代此列表并将每个它的每个 cluster-id 传递给 library API
%sh
export DATABRICKS_TOKEN=<Personal Access Token>
curl -X GET --header "Authorization: Bearer $DATABRICKS_TOKEN" \
curl --netrc --request GET 'https://instance-id/api/2.0/libraries/cluster-status?cluster_id=clusterid'