获取所有数据块工作区集群中已安装库的列表

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'