Py4JJavaError Произошла ошибка при вызове o37.load. : net.snowflake.client.jdbc.SnowflakeSQLException: драйвер JDBC обнаружил ошибку связи

Я пытаюсь подключиться (PySpark + Snowflake) постоянно получаю ошибку.

Я использую файлы jar PySpark 3.1, JDBC и Spark_Snowflake, также помещенные в Classpath. Не знаю, почему я получаю следующую ошибку.

Код:

      from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
from pyspark import SparkConf, SparkContext
sc = SparkContext("local", "Test App")
spark = SQLContext(sc)
spark_conf = SparkConf().setMaster('local').setAppName('Testing Spark SF')
sfOptions = {
  "sfURL" : "<account_identifier>.snowflakecomputing.com",
  "sfUser" : "<user_name>",
  "sfPassword" : "<password>",
  "sfDatabase" : "<database>",
  "sfSchema" : "<schema>",
  "sfWarehouse" : "<warehouse>"
}

SNOWFLAKE_SOURCE_NAME = "net.snowflake.spark.snowflake"

df = spark.read.format(SNOWFLAKE_SOURCE_NAME) \
  .options(**sfOptions) \
  .option("query",  "select 1 as my_num union all select 2 as my_num") \
  .load()

df.show()

Ошибка:

Py4JJavaError: ошибка при вызове o37.load. :net.snowflake.client.jdbc.SnowflakeSQLException: драйвер JDBC обнаружил ошибку связи. Сообщение: исключение для HTTP-запроса: sun.security.validator.ValidatorException: доверенный сертификат не найден. в net.snowflake.client.jdbc.RestRequest.execute(RestRequest.java:284) в net.snowflake.client.core.HttpUtil.executeRequestInternal(HttpUtil.java:639) в net.snowflake.client.core.HttpUtil.executeRequest. (HttpUtil.java:584) в net.snowflake.client.core.HttpUtil.executeGeneralRequest(HttpUtil.java:551) в net.snowflake.client.core.SessionUtil.newSession(SessionUtil.java:587) в net.snowflake.client.core.SessionUtil.openSession(SessionUtil.java:285) в net.snowflake.client.core.SFSession.open(SFSession.java:446) в net.snowflake.client.jdbc.DefaultSFConnectionHandler.инициализировать (DefaultSFConnectionHandler.java:104) по адресу net.snowflake.client.jdbc.DefaultSFConnectionHandler.initializeConnection(DefaultSFConnectionHandler.java:79) по адресу net.snowflake.client.jdnowflakeConnectionVjava.client.jdbc.SnowflakeConnectionVjava: .client.jdbc.SnowflakeConnectionV1. (SnowflakeConnectionV1.java:96) в net.snowflake.client.jdbc.SnowflakeDriver.connect(SnowflakeDriver.java:172) в java.sql.DriverManager.getConnection(Driver:6Manager) в java.Manager.java64. .sql.DriverManager.getConnection(DriverManager.java:208) в net.snowflake.spark.snowflake.JDBCWrapper.getConnector(SnowflakeJDBCWrapper.scala:209) в net.snowflake. $spark.snowflake.SnowflakeRelation(SnowflakeRelation. .scala: 60) на net.snowflake.spark.snowflake.SnowflakeRelation$$Lambda$866/22415031.apply (Неизвестный источник) на scala.Option.getOrElse(Option.scala:189) в net.snowflake.spark.snowflake.SnowflakeRelation.schema$lzycompute(SnowflakeRelation.scala:57) в net.snowflake.spark.snowflake.SnowflakeRelation.schema(SnowflakeRelation) в orgala: 56.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:449) в org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:325) в org.apache.spark.sql.DataFrameReader . $anonfun$ load $3(DataFrameReader.scala:307) в org.apache.spark.sql.DataFrameReader$$Lambda$858/5135046.apply (Неизвестный источник) в scala.Option.getOrElse(Option.scala:189) в org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:307) в org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:225) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun .reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:497) в py4j. .java: 244) на py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) на py4j.Gateway.invoke(Gateway.java:282) на py4j.commands.AbstractCommand.invokeMethod (AbstractCommand.java4:132) на py4j.java4:132 .commands.CallCommand.execute(CallCommand.java:79) в py4j.GatewayConnection.run(GatewayConnection.java:238) в java.lang.Thread.run(Thread.java:745) Вызвано: javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException: доверенный сертификат не найден на sun.security.ssl.Alerts.getSSLException(Alerts.java:198) на sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1958) at sun .security.ssl.Handshaker.fatalSE(Handshaker.java:322) на sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316) на sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1526) на sun.security.ssl .ClientHandshaker.processMessage(ClientHandshaker.java:215) на sun.security.ssl.Handshaker.processLoop(Handshaker.java:1024) на sun.security.ssl.Handshaker.process_record(Handshaker.java:954) на sun.security. ssl. .ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:1396) в net.snowflake.client.jdbc.internal.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket (SSLConnectionSocket:4Factory).java: 322) на sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316) на sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1526) на sun.security.ssl.ClientHandshaker.processMessage (ClientHandshaker.processMessage (ClientHandshaker.processMessage (ClientHandshaker.processMessage) .java: 215) на sun.security.ssl.Handshaker.processLoop(Handshaker.java:1024) на sun.security.ssl.Handshaker.process_record(Handshaker.java:954) на sun.security.ssl.SSLSocketImpl.readRecord ( SSLSocketImpl.java:1065) в sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1384) в sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1412) в sun.security (SSLSocketImpl.java:1396) в net.snowflake.client.jdbc.internal.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket (SSLConnectionSocketFactory.java:436)java: 322) на sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316) на sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1526) на sun.security.ssl.ClientHandshaker.processMessage (ClientHandshaker.processMessage (ClientHandshaker.processMessage (ClientHandshaker.processMessage) .java: 215) на sun.security.ssl.Handshaker.processLoop(Handshaker.java:1024) на sun.security.ssl.Handshaker.process_record(Handshaker.java:954) на sun.security.ssl.SSLSocketImpl.readRecord ( SSLSocketImpl.java:1065) в sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1384) в sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1412) в sun.security (SSLSocketImpl.java:1396) в net.snowflake.client.jdbc.internal.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket (SSLConnectionSocketFactory.java:436)fatalSE (Handshaker.java:316) по адресу sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1526) по адресу sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:215) по адресу sun.security.ssl. .processLoop (Handshaker.java:1024) по адресу sun.security.ssl.Handshaker.process_record(Handshaker.java:954) по адресу sun.security.ssl.SSLSocketImpl.readRecord (SSLSocketImpl.java:1065) по адресу sun.security.ssl. SSLSocketImpl.performInitialHandshake (SSLSocketImpl.java:1384) в sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1412) в sun.security.ssl.SSLSocketImpl.startHandsHandshake (SSLSocketImpl.startHandshake. .jdbc.internal.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket (SSLConnectionSocketFactory.java:436)fatalSE (Handshaker.java:316) по адресу sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1526) по адресу sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:215) по адресу sun.security.ssl. .processLoop (Handshaker.java:1024) по адресу sun.security.ssl.Handshaker.process_record(Handshaker.java:954) по адресу sun.security.ssl.SSLSocketImpl.readRecord (SSLSocketImpl.java:1065) по адресу sun.security.ssl. SSLSocketImpl.performInitialHandshake (SSLSocketImpl.java:1384) по адресу sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1412) по адресу sun.security.ssl.SSLSocketImpl.startHandshake. .jdbc.internal.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket (SSLConnectionSocketFactory.java:436)1526) на sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:215) на sun.security.ssl.Handshaker.processLoop(Handshaker.java:1024) на sun.security.ssl.Handshaker.process_record (Handshaker.java : 954) на sun.security.ssl.SSLSocketImpl.readRecord (SSLSocketImpl.java:1065) на sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1384) на sun.security.ssl.SSLSoImpl. java: 1412) по адресу sun.security.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:1396) по адресу net.snowflake.client.jdbc.internal.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayLConnectionSocketFactory.createLayLConnectionSoctory.createLayLConnectionSoction.createLayLConnectionSoction.1526) на sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:215) на sun.security.ssl.Handshaker.processLoop(Handshaker.java:1024) на sun.security.ssl.Handshaker.process_record (Handshaker.java : 954) на sun.security.ssl.SSLSocketImpl.readRecord (SSLSocketImpl.java:1065) на sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1384) на sun.security.ssl.SSLSoImpl. java: 1412) по адресу sun.security.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:1396) по адресу net.snowflake.client.jdbc.internal.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayLConnectionSocketFactory.createLayLConnectionSoctory.createLayLConnectionSoction.createLayLConnectionSoction.process_record (Handshaker.java:954) в sun.security.ssl.SSLSocketImpl.readRecord (SSLSocketImpl.java:1065) в sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1384) в sun.plsecurity. .startHandshake (SSLSocketImpl.java:1412) в sun.security.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:1396) в net.snowflake.client.jdbc.internal.apache.http.conn.ssl.SSLCaNectionSocketSocketSocketSocketSocketSocketSocketSocketSocketSocketSocketSocketSocketSocketSoqueLa .java: 436)process_record (Handshaker.java:954) в sun.security.ssl.SSLSocketImpl.readRecord (SSLSocketImpl.java:1065) в sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1384) в sun.plsecurity. .startHandshake (SSLSocketImpl.java:1412) в sun.security.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:1396) в net.snowflake.client.jdbc.internal.apache.http.conn.ssl.SSLCaNectionSocketSocketSocketSocketSocketSocketSocketSocketSocketSocketSocketSocketSocketSocketSoqueLa .java: 436)SSLConnectionSocketFactory.createLayeredSocket (SSLConnectionSocketFactory.java:436)SSLConnectionSocketFactory.createLayeredSocket (SSLConnectionSocketFactory.java:436)

1 ответ

Очевидно, у вас проблемы с SSL-сертификатом. Вы можете отменить это временно.

      sfOptions = {
   ...
   "sfSSL" : "false",
}

Однако вы можете проверить, получаете ли вы доступ к Snowflake через прокси. Вам нужно будет импортировать сертификат прокси и включить его в свои cacerts. расположение по умолчанию cacerts вашей работающей версии Java. вы можете найти его в домашнем каталоге java в lib/security.

      keytool -import -trustcacerts -alias cert_ssl -file proxy.cer -noprompt -storepass changeit -keystore cacerts
Другие вопросы по тегам