Как получить параметры JDBC / ODBC кластера программно?

#jdbc #databricks #azure-databricks #databricks-sql-analytics #databricks-sql

#jdbc #databricks #azure-databricks #databricks-sql-analytics #databricks-sql

Вопрос:

Документация Databricks показывает, как получить параметры имени хоста кластера, порта, HTTP-пути и URL-адреса JDBC на вкладке JDBC / ODBC в пользовательском интерфейсе. См. Изображение:

Вкладка JDBC / ODBC Databricks
(источник: databricks.com )

Есть ли способ получить ту же информацию программно? Я имею в виду использование API Databricks или CLI Databricks. Меня особенно интересует тот HTTP path , который содержит идентификатор рабочей области.

Ответ №1:

Вы можете использовать операцию Get REST API SQL Analytics (возможно, вместе с List ) — она возвращает строку подключения JDBC как часть ответа ( jdbc_url поле):

 {
  "id": "123456790abcdef",
  "name": "My SQL endpoint",
  "cluster_size": "Medium",
  "min_num_clusters": 1,
  "max_num_clusters": 10,
  "auto_stop_mins": 30,
  "num_clusters": 5,
  "num_active_sessions": 30,
  "state": "RUNNING",
  "creator_name": "user@example.com",
  "jdbc_url":"jdbc:spark://<databricks-instance>:443/defau<transportMode=http;ssl=1;AuthMech=3;httpPath=/sql/protocolv1/o/0123456790abcdef;",
  "odbc_params": {
    "host": "<databricks-instance>",
    "path": "/sql/protocolv1/o/0/123456790abcdef",
    "protocol": "https",
    "port": 443
  }
}
 

HTTP-путь также присутствует, как path часть odbc_params объекта.

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

1. Потрясающе, похоже, это то, что мне нужно. Тем не менее, я получаю: {"error_code":"FEATURE_DISABLED","message":"SQL Gateway is not supported for Org XXXX} почему список конечных точек находится в предварительном просмотре?

2. интересно… Включена ли у вас SQL Analytics для этой рабочей области? Я только что проверил свое собственное рабочее пространство Azure, и API работает просто отлично

Ответ №2:

Другой способ — перейти в консоль Databricks

  1. Щелкните значок вычисления Вычислить на боковой панели.
  2. Выберите кластер для подключения.
  3. Перейдите к дополнительным параметрам.
  4. Перейдите на вкладку JDBC / ODBC.
  5. Скопируйте сведения о подключении.

Более подробная информация здесь

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

1. Вопрос касался программного доступа к этим данным 🙂

2. Приведенный выше комментарий верен, это не ответ на заданный вопрос, но я все равно был рад найти его здесь; более простой / прямой путь для достижения чего-то, что мне нужно сделать только один раз.

Ответ №3:

Это недоступно непосредственно из API Databricks, но это шаблон для строки подключения кластера JDBC:

 jdbc:spark://<db-hostname>:443/defau<transportMode=http;ssl=1;httpPath=sql/protocolv1/o/<workspace-id>/<cluster-id>;AuthMech=3;UID=token;PWD=<personal-access-token>
 
  • db-hostname является ли ваше имя хоста URL-адресом вашего экземпляра
  • workspace-id является ли длинное число в вашем имени хоста (https://adb-1234512345123456.2.azuredatabricks.net /). Он доступен как workspaceId в выводе az databricks workspace list , или вы можете проанализировать его из hostname
  • cluster-id кластер, для которого вам нужна строка подключения
  • personal-access-token используется ли токен для аутентификации

Итак, все вышеперечисленное у вас уже есть или вы можете получить программно и заменить в шаблоне. Это немного громоздко, но это лучшее, что мы можем сделать.