【发布时间】:2018-05-10 02:16:01
【问题描述】:
我在 Mac 上运行 PyCharm 2018.2 并执行 pyspark 程序。 Spark 安装在 virtualenv 中。
我需要在我的 pyspark 脚本中使用外部 jars(特别是 AWS s3 jars),所以我使用以下来声明 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 信任库中的证书?
【问题讨论】:
-
该包使用您的系统java,所以如果maven在您的办公环境中工作,那么这也应该工作?
-
我的本地机器上安装了多个 jdk。知道如何确定软件包使用的是哪一个吗?
-
是的。在调试器中运行程序并在
sc = SparkContext(conf = conf)之后暂停它,然后运行 ps aux | grep java以及哪个 jvm 正在为此使用 -
感谢您的帮助。这应该很明显;)。你想在这里快速回答一下,以便我接受并给你代表 - 想要我自己回答吗?