Получить список установленных библиотек во всех кластерах рабочей области databricks

#command-line-interface #databricks #azure-powershell #azure-databricks

#интерфейс командной строки #databricks #azure-powershell #azure-databricks

Вопрос:

Как мне получить список всех библиотек, установленных в каждом кластере в databricks workspace. У меня есть сценарий, в котором в одном рабочем пространстве запущено более 20 кластеров, поэтому я ищу способ получения этой информации с помощью скриптов

Проверил параметр командной строки рабочей области, но, похоже, это не дает необходимой информации.

Ищем 4 столбца в выходных данных, т.Е. Имя, тип, статус и источник, как показано ниже

введите описание изображения здесь

Ответ №1:

Вы можете достичь этого, выполнив следующие шаги.

Шаг-01: Получить список доступных кластеров и их соответствующих cluster-id на основе следующего кода Python и создать список для 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)
 

Шаг-02: вы можете повторить этот список и передать каждый ит-идентификатор каждого кластера в 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' 
 

введите описание изображения здесь
введите описание изображения здесь

введите описание изображения здесь

Комментарии:

1. спасибо @Karthikeyan, есть ли способ сохранить этот вывод curl в dataframe?

2. ДА.. Вы можете использовать следующие шаги. (Просто логика) 1. выполните команду curl с помощью кода python 2. преобразуйте этот результат в список python 3. преобразуйте список соответствия в dataframe

3. спасибо @Karthikeyan, это помогло.

Ответ №2:

Для этого необходимо использовать выделенный API библиотек. В частности, команда состояния кластера, которая предоставит вам список установленных библиотек и их статус (пример из документов):

 {
  "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
    }
  ]
}
 

Комментарии:

1. спасибо, это помогло!