当前位置: 首页 > 知识库问答 >
问题:

Py4JJavaError调用o37时出错。负载:网雪花。客户jdbc。SnowflakeSQLException:JDBC驱动程序遇到通信错误

归明诚
2023-03-14

我正在尝试连接(Pypark Snowflake)不断收到错误。

我正在使用PySpark 3.1,JDBC和Spark_Snowflakejar文件也放置在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时出错。负载:网雪花。客户jdbc。SnowflakeSQLException:JDBC驱动程序遇到通信错误。消息:HTTP请求遇到异常:sun。安全验证器。ValidatorException:未找到受信任的证书。净利润。雪花。客户jdbc。重新请求。在net上执行(RestRequest.java:284)。雪花。客户果心HttpUtil。net上的executeRequestInternal(HttpUtil.java:639)。雪花。客户果心HttpUtil。net上的executeRequest(HttpUtil.java:584)。雪花。客户果心HttpUtil。net上的executeGeneralRequest(HttpUtil.java:551)。雪花。客户果心会话直至。net上的newSession(SessionUtil.java:587)。雪花。客户果心会话直至。net上的openSession(SessionUtil.java:285)。雪花。客户果心SFSession。在net上打开(SFSession.java:446)。雪花。客户jdbc。DefaultsConnectionHandler。在net上初始化(DefaultSFConnectionHandler.java:104)。雪花。客户jdbc。DefaultsConnectionHandler。net上的initializeConnection(DefaultSFConnectionHandler.java:79)。雪花。客户jdbc。雪花连接V1。net上的initConnectionWithImpl(SnowflakeConnectionV1.java:116)。雪花。客户jdbc。雪花连接V1。(SnowflakeConnectionV1.java:96)在net。雪花。客户jdbc。雪花司机。在java上连接(SnowflakeDriver.java:172)。sql。DriverManager。java上的getConnection(DriverManager.java:664)。sql。DriverManager。net上的getConnection(DriverManager.java:208)。雪花。火花雪花。JDBCWrapper。net上的getConnector(SnowflakeJDBCWrapper.scala:209)。雪花。火花雪花。雪花关系$anonfun$schema$1(SnowflakeRelationship.scala:60)at net。雪花。火花雪花。雪花关系$$Lambda$866/22415031。在scala应用(未知源)。选项getOrElse(可选。scala:189)净利润。雪花。火花雪花。雪花关系。net上的schema$lzycompute(SnowflakeRelation.scala:57)。雪花。火花雪花。雪花关系。组织中的模式(SnowflakeRelation.scala:56)。阿帕奇。火花sql。处决数据源。数据源。位于组织的resolveRelation(DataSource.scala:449)。阿帕奇。火花sql。DataFrameReader。在组织中加载v1source(DataFrameReader.scala:325)。阿帕奇。火花sql。DataFrameReader$anonfun$load$3(DataFrameReader.scala:307)位于org。阿帕奇。火花sql。DataFrameReader$$Lambda$858/5135046。在scala应用(未知源)。选项位于org的getOrElse(Option.scala:189)。阿帕奇。火花sql。DataFrameReader。在组织加载(DataFrameReader.scala:307)。阿帕奇。火花html" target="_blank">sql。DataFrameReader。在sun加载(DataFrameReader.scala:225)。反映NativeMethodAccessorImpl。在sun调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:62)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。lang.reflect。方法在py4j调用(方法java:497)。反射MethodInvoker。在py4j上调用(MethodInvoker.java:244)。反射反光发动机。在py4j处调用(ReflectionEngine.java:357)。网关。在py4j上调用(Gateway.java:282)。命令。AbstractCommand。py4j上的invokeMethod(AbstractCommand.java:132)。命令。CallCommand。在py4j上执行(CallCommand.java:79)。网关连接。在java上运行(GatewayConnection.java:238)。lang.Thread。运行(Thread.java:745)的原因:javax。网ssl。SSLHandshakeException:太阳。安全验证器。ValidatorException:在sun上找不到受信任的证书。安全ssl。警报。sun上的getSSLException(Alerts.java:198)。安全ssl。SSLSocketImpl。致命(SSLSocketImpl.java:1958)在sun。安全ssl。握手。sun的fatalSE(Handshaker.java:322)。安全ssl。握手。fatalSE(Handshaker.java:316)在sun。安全ssl。ClientHandshaker。sun的服务器证书(ClientHandshaker.java:1526)。安全ssl。ClientHandshaker。在sun上处理消息(ClientHandshaker.java:215)。安全ssl。握手。sun上的processLoop(Handshaker.java:1024)。安全ssl。握手。在sun处理\u记录(Handshaker.java:954)。安全ssl。SSLSocketImpl。sun上的readRecord(SSLSocketImpl.java:1065)。安全ssl。SSLSocketImpl。在sun进行PerformitialHandshake(SSLSocketImpl.java:1384)。安全ssl。SSLSocketImpl。sun的startHandshake(SSLSocketImpl.java:1412)。安全ssl。SSLSocketImpl。net上的startHandshake(SSLSocketImpl.java:1396)。雪花。客户jdbc。内部的阿帕奇。http。连接ssl。SSL连接插座工厂。createLayeredSocket(SSLConnectionSocketFactory.java:436)

共有1个答案

司知
2023-03-14

很明显,您对SSL证书有问题。您可以暂时覆盖它。

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

但是,您可以检查是否通过代理访问Snowflake。您需要导入代理的证书并将其包含在cacerts中。正在运行的java版本的cacerts的默认位置。您可以在lib/security下的java主目录中找到它。

keytool -import -trustcacerts -alias cert_ssl -file proxy.cer -noprompt -storepass changeit -keystore cacerts
 类似资料:
  • 我是一个学生,我真的被Py4JJavaError这个问题卡住了两个星期,在互联网上没有太多;我真的需要帮助: 请帮帮我这是下周要做的项目

  • 我正在使用snowflake jdbc驱动程序(版本:3.12.9)以编程方式执行查询。在snowflake客户端中执行查询正在工作。如果以编程方式执行相同的查询,则会出现以下异常, 谷歌了这个例外,没有找到一个链接。 我也得到了这些错误代码:[0A00020024] 这是我的连接url:jdbc:snowflake://account.xxx.azure.snowflakecomputing.c

  • 我是PySpark的新手。我一直在用测试样本编写代码。一旦我在更大的文件上运行代码(3gb压缩)。我的代码只做了一些过滤和连接。关于py4J,我一直在出错。 任何帮助都是有益的,我们将不胜感激。 回来 更新:我使用的是py4j 10.7,刚刚更新到10.8 更新(1):添加spark。驾驶员内存: 汇总返回错误: 更新(2):我通过更改spark默认值尝试了这一点。conf文件。仍在获取错误PyS

  • 我在运行Python 3.6.5的Jupyter笔记本和运行3.7.2的Python shell中出现了这个错误。我的操作系统是Windows10。我在这两种环境中都安装了pip pyspark。两者都使用Spark Version2.4.0,而我的Java JDK是Oracle JDK Version8,JDK1.8.0_201。这是我在这两种情况下运行的代码: 这里:Spyder中的PySpa

  • 我想按照spark网站上的说明为spark安装graphframes,但命令: <代码>pyspark--打包graphframes:graphframes:0.8.1-spark3.0-s\u 2.12 不适合我。 我尝试了多种安装方法,但决定继续下载graphframes。jar,将其添加到Spark的常规列表中。jar文件并将其手动添加到代码spark中。sparkContext。addPy

  • 我在eclipse(Mars)中导入了一个项目,在我的pom.xml文件中有以下错误:“Missing artifact com.oracle:ojdbc7:jar:12.1.0.1” 这是代码: 我已经从Oracle下载了ojdbc7.jar,并尝试使用以下命令安装它: mvn安装:install-file-dgroupid=com.oracle-dartifactid=ojdbc7-dvers