python - 如何更新在 Mac 上的 PyCharm 中运行的 pyspark 使用的 Java 密钥库?
问题描述
我在 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 信任库中的证书?
解决方案
在调试器中运行程序并暂停它sc = SparkContext(conf = conf)
然后运行ps aux | grep java
,您将知道哪个jvm
被用于此
然后你应该设置相同的密钥库。知道正确的 JDK 后,使用以下链接设置 keyStore
推荐阅读
- java - Java Runtime 7u51 不支持 DPI?
- python - 用 levenahtein 将大文件聚类到 3 个组
- mysql - 如何从sql中的列中仅输出某些项目
- javascript - 如何检测数组是否有空项并将其删除?
- c# - C# ObservableCollection 未以编程方式添加项目
- javascript - 在元素属性中存储/提取整数数组
- c# - 试图从 C# 获取公共 IP
- python-3.x - leetcode 14 Python 中等效的最长公共前缀 Java 子字符串
- python - 是否可以在 Pygame 中实现对象逐渐移动到给定坐标?
- go - 为什么golang抱怨无法加载路径?