我们可以使用Scala在数据块中使用SPN连接SQL Server数据库吗?

问题描述

我的用例是使用Databricks笔记本中的SPN凭据连接到sql Server。由于我没有用户名密码并且无法生成访问令牌,因此我只能在SPN的帮助下进行操作。直到现在我什么都找不到。 如果有人以前做过或对此有任何想法,请帮助如何做。在此先感谢:)

解决方法

是的,可以这样做,repository of sql-spark-connector connectordocumentation中对此进行了描述。前提条件是必须安装azure-activedirectory-library-for-java library。在安装完两个依赖项之后,以下代码应该可以工作:

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()