Это мой текущий код для подключения к Oracle:
Код: Выделить всё
url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(PORT=xxxx)(HOST=xxxx))(CONNECT_DATA=(SID=xxx)))"
df = (
spark.read.format("jdbc")
.option("url", url)
.option("dbTable", "schema.table")
.option("user", "user")
.option("password", dbutils.secrets.get(scope = "oracle", key = "password"))
.option("driver", "oracle.jdbc.driver.OracleDriver")
.option("fetchsize", 2000)
.option("javax.net.ssl.trustStoreType", "JKS")
.option("javax.net.ssl.trustStore", "/Volumes/test_catalog/test_schema/test_volume/oracle_truststore.jks")
.option("javax.net.ssl.trustStorePassword", dbutils.secrets.get(scope = "oracle", key = "truststore_pw"))
.load()
)
Код: Выделить всё
(java.sql.SQLRecoverableException) IO Error: IO Error PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target, Authentication lapse 0 ms.
Код: Выделить всё
%sh
ls /Volumes/test_catalog/test_schema/test_volume
oracle_truststore.jks
Кто-нибудь знает, что я делаю неправильно или что может сработать?< /p>
В качестве обходного пути я сохранил хранилище доверенных сертификатов в dbfs. Но это решение работает только с кластерами персональных вычислений, поскольку dbfs недоступен в кластере общих вычислений. В любом случае я бы предпочел не хранить этот файл в dbfs, поскольку я не могу контролировать доступ.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ng-volumes