我们可以使用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()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...