我正在尝试将 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
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 语法和数据治理工具。