如何更新在Mac上的PyCharm中运行的pyspark使用的Java密钥库?

时间:2018-05-08 22:31:16

标签: python pyspark pycharm

我在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的信任库中的证书?

1 个答案:

答案 0 :(得分:1)

在调试器中运行程序并在sc = SparkContext(conf = conf)之后暂停,然后运行ps aux | grep java,您就会知道jvm正在使用哪个

然后你应该为它设置密钥库。在您知道正确的JDK之后,请使用以下链接来设置keyStore

How to properly import a selfsigned certificate into Java keystore that is available to all Java applications by default?