【问题标题】:How do I update the Java keystore used by pyspark running in PyCharm on Mac?如何更新在 Mac 上的 PyCharm 中运行的 pyspark 使用的 Java 密钥库?
【发布时间】: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 正在为此使用
  • 感谢您的帮助。这应该很明显;)。你想在这里快速回答一下,以便我接受并给你代表 - 想要我自己回答吗?

标签: python pyspark pycharm


【解决方案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?

【讨论】:

  • 一旦我有了正确的 JDK,这个问题就会显示导入到 keytool 的步骤:stackoverflow.com/questions/11617210/…
  • 感谢您的链接,更新了相同的答案。希望您对令牌的其他查询也得到解决?
猜你喜欢
  • 2012-04-04
  • 2011-05-24
  • 2021-01-17
  • 2020-02-14
  • 2022-01-16
  • 1970-01-01
  • 2014-07-09
  • 2019-03-03
  • 1970-01-01
相关资源
最近更新 更多