【问题标题】:Get the list of installed libraries across all databricks workspace clusters获取所有 databricks 工作区集群中已安装库的列表
【发布时间】:2022-01-09 18:23:30
【问题描述】:

如何获取 databricks 工作区上每个集群上安装的所有库的列表。我有一个场景,其中超过 20 个集群在单个工作区上运行,因此正在寻找一种使用脚本获取此信息的方法

检查了Workspace CLI 选项,但似乎没有提供所需的信息。

在输出中查找 4 列,即名称、类型、状态和来源,如下所示

【问题讨论】:

    标签: command-line-interface databricks azure-powershell azure-databricks


    【解决方案1】:

    您可以根据以下步骤实现。

    Step-01:根据以下python代码获取可用集群列表及其各自的cluster-id,并为cluster-id创建列表

    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' 
    

    【讨论】:

    • 感谢@Karthikeyan,有没有办法将此 curl 输出存储在数据框中?
    • 是的。您可以使用以下步骤。 (只是一个逻辑) 1. 通过 python 代码执行 curl 命令 2. 将结果转换为 python 列表 3. 将尊重列表转换为数据框
    • 谢谢@Karthikeyan,这有帮助。
    【解决方案2】:

    您需要为此使用专用的Libraries API。具体来说,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
        }
      ]
    }
    

    【讨论】:

    • 谢谢,这有帮助!
    猜你喜欢
    • 1970-01-01
    • 2011-11-05
    • 2021-11-26
    • 2023-03-13
    • 1970-01-01
    • 2020-07-19
    • 2021-12-16
    • 2020-03-03
    • 1970-01-01
    相关资源
    最近更新 更多