Можем ли мы подключить базы данных sql Server с помощью SPN в databricks с помощью scala?

#sql-server #apache-spark #databricks #azure-databricks #sqlconnection

#sql-server #apache-spark #databricks #azure-databricks #sqlconnection

Вопрос:

Мой вариант использования — подключиться к SQL server, используя учетные данные SPN в записной книжке Databricks. Поскольку у меня нет имени пользователя, пароля и я не могу сгенерировать токен доступа, поэтому я должен сделать это только с помощью SPN. До сих пор я ничего не мог найти. Пожалуйста, помогите, как это сделать, если кто-нибудь делал это раньше или имеет представление об этом. Заранее спасибо 🙂

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

1. learn.microsoft.com/en-us/azure/azure-sql/database /… — вы имеете в виду токен доступа?

2. Что вы подразумеваете под SPN? Вы имеете в виду имя участника службы? Я считаю, что это маловероятно для Kerberos / on-prem.

Ответ №1:

Да, это возможно сделать, и это описано в репозитории sql-spark-connector connector и в документации. Обязательным условием является установка библиотеки azure-activedirectory-library-for-java. После установки обеих зависимостей должен работать следующий код:

 context = adal.AuthenticationContext(authority)
token = context.acquire_token_with_client_credentials(
      resource_app_id_url, service_principal_id, service_principal_secret)
access_token = token["accessToken"]

jdbc_db = spark.read 
        .format("com.microsoft.sqlserver.jdbc.spark") 
        .option("url", url) 
        .option("dbtable", table_name) 
        .option("accessToken", access_token) 
        .option("encrypt", "true") 
        .option("hostNameInCertificate", "*.database.windows.net") 
        .load()
  

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

1. Как можно получить значение resource_app_id_url в приведенном выше фрагменте кода?

2. это идентификатор приложения для участника-службы

3. Это код python. Существует ли версия Scala?

4. Версия Scala почти идентична, некоторые различия в именах функций