我在Mac上运行PyCharm 2018.2并执行pyspark程序。 Spark已经安装在virtualenv中。
我需要在我的pyspark脚本中使用外部jar(特别是AWS s3 jar),所以我使用以下内容来声明maven依赖:
import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages "org.apache.hadoop:hadoop-aws:2.7.3" pyspark-shell'
conf = SparkConf() \
.setMaster("local[2]") \
.setAppName("pyspark-unittests") \
.set("spark.sql.parquet.compression.codec", "snappy")
sc = SparkContext(conf=conf)
在我的家庭网络上,这很有效。
在我的公司网络上,我和互联网之间有一个SSL检查器,它将HTTPS请求上的SSL证书交换到Maven Central。
这导致以下错误消息:
Server access error at url https://repo1.maven.org/maven2/joda-time/joda-time/maven-metadata.xml (javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target)
我知道这是因为SSL检查员签署HTTPS响应的SSL证书不受pyspark执行的JVM信任。
我有签署HTTPS响应的中间证书的.cer副本。
在这种特定情况下使用哪个JVM(在PyCharm中运行python / pyspark)以及如何更新该JVM的信任库中的证书?
答案 0 :(得分:1)
在调试器中运行程序并在sc = SparkContext(conf = conf)
之后暂停,然后运行ps aux | grep java
,您就会知道jvm
正在使用哪个
然后你应该为它设置密钥库。在您知道正确的JDK之后,请使用以下链接来设置keyStore