首页 > 解决方案 > spark.read 在 Databricks 中给出 KrbException

问题描述

我正在尝试从 databricks 笔记本连接到 sql 数据库。以下是我的代码:

jdbcDF = spark.read \
    .format("com.microsoft.sqlserver.jdbc.spark") \
    .option("url", "jdbc:sqlserver://dbs-sdp-sql-dev.database.windows.net:1433;database=dm_test;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;Authentication=ActiveDirectoryIntegrated") \
    .option("dbtable", "Cars") \
    .option("Driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver").load()

我收到错误:

IllegalArgumentException: KrbException: Cannot locate default realm

完整的跟踪是:

IllegalArgumentException                  Traceback (most recent call last)
<command-1799101041598361> in <module>
----> 1 jdbcDF = spark.read \
      2         .format("com.microsoft.sqlserver.jdbc.spark") \
      3         .option("url", "jdbc:sqlserver://dbs-sdp-sql-dev.database.windows.net:1433;database=dm_test;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;Authentication=ActiveDirectoryIntegrated") \
      4         .option("dbtable", "Cars") \
      5         .option("Driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver").load()

/databricks/spark/python/pyspark/sql/readwriter.py in load(self, path, format, schema, **options)
    208             return self._df(self._jreader.load(self._spark._sc._jvm.PythonUtils.toSeq(path)))
    209         else:
--> 210             return self._df(self._jreader.load())
    211 
    212     def json(self, path, schema=None, primitivesAsString=None, prefersDecimal=None,

/databricks/spark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py in __call__(self, *args)
   1302 
   1303         answer = self.gateway_client.send_command(command)
-> 1304         return_value = get_return_value(
   1305             answer, self.gateway_client, self.target_id, self.name)
   1306 

/databricks/spark/python/pyspark/sql/utils.py in deco(*a, **kw)
    121                 # Hide where the exception came from that shows a non-Pythonic
    122                 # JVM exception message.
--> 123                 raise converted from None
    124             else:
    125                 raise

IllegalArgumentException: KrbException: Cannot locate default realm

我尝试在集群上安装 python-krb5 但失败了。

我尝试在集群上安装 requests-kerberos==0.12.0 但失败了。

我正在关注以下教程:https ://docs.microsoft.com/en-us/sql/connect/spark/connector?view=sql-server-ver15

如何修复此错误?

标签: pythonsql-serverdatabrickskerberos

解决方案


推荐阅读