#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. спасибо, это помогло!