Pyspark Java 白名单类问题

问题描述 投票:0回答:1

我正在尝试将 hive 元存储迁移到 unity 目录中,以便我必须在现有集群中启用 unity 目录,但我们正在使用下面代码的笔记本之一现在不受支持并引发错误。请协助我们在当前集群中启用Unity Catalog到现有代码后应该如何处理。

请告诉我们,任何替代代码都可以实现。

jdbcUrl = "jdbc:sqlserver://{0}:{1};database={2};UserName={3};Password={4}".format(jdbcHostname, jdbcPort, jdbcDatabase,dbr_PrincipalId,dbr_PrincipalSecret)
  connectionProperties={
      "driver":"com.microsoft.sqlserver.jdbc.SQLServerDriver",
      "authentication": "ActiveDirectoryServicePrincipal"
      }
 
  props = spark._sc._gateway.jvm.java.util.Properties()
  props.putAll(connectionProperties)
  
  driver_manager = spark._sc._gateway.jvm.java.sql.DriverManager
  con = driver_manager.getConnection(jdbcUrl,props)
error :
py4j.security.Py4JSecurityException: Method public synchronized void java.util.Hashtable.putAll(java.util.Map) is not whitelisted on class class java.util.Properties
apache-spark pyspark azure-databricks databricks-unity-catalog
1个回答
0
投票

java.util.Hashtable.putAll(java.util.Map)
未列入白名单 由于
py4j.security.Py4JSecurityException
异常。

因此,正如 @Ganesh Chandrasekaran 提到的,您可以使用以下任何一种。

remote_table1 = (spark.read
  .format("sqlserver")
  .option("host", "hostName")
  .option("port", 1433)
  .option("user", "userName")
  .option("password", "password")
  .option("database", "databaseName")
  .option("dbtable", "tableName")
  .load()
)

#OR
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
remote_table2 = (spark.read
  .format("jdbc")
  .option("driver", driver)
  .option("url", "jdbc:sqlserver://<hostName>:1433;database=master")
  .option("dbtable", "tableName")
  .option("user", "userName")
  .option("password", "password")
  .load()
)

此外,请检查此实验性功能,以利用 Unity Catalog 语法和数据治理工具。

© www.soinside.com 2019 - 2024. All rights reserved.