Python Pyspark在压缩包后找不到合适的TLS CA证书

Python Pyspark在压缩包后找不到合适的TLS CA证书,python,apache-spark,ssl,pyspark,python-requests,Python,Apache Spark,Ssl,Pyspark,Python Requests,我已经用它创建了一个Pyspark应用程序。在示例项目中,dependencies.zip是一个包含实际代码的依赖项包。我正在使用将spark提交作业的元数据发布到启用https的端点 我提交的工作如下: spark submit--master local[*]--py files dependencies.zip job.py 这导致 OSError:在运行spark submit时,找不到合适的TLS CA证书捆绑包, 文件“/private/var/folders/_2/4jk9zwf1

我已经用它创建了一个Pyspark应用程序。在示例项目中,dependencies.zip是一个包含实际代码的依赖项包。我正在使用将spark提交作业的元数据发布到启用https的端点

我提交的工作如下:
spark submit--master local[*]--py files dependencies.zip job.py

这导致

OSError:在运行spark submit时,找不到合适的TLS CA证书捆绑包,
文件“/private/var/folders/_2/4jk9zwf11yx6h93v9nyv284r0000gn/T/spark-2604a272-4da7-45e9-98a4-02110c71f4db/userFiles-1b562995-6006-47a1-8d98-5102449063fa/dependencies.zip/requests/adapters.py”,第407行,发送
self.cert\u verify(conn,request.url,verify,cert)
文件“/private/var/folders/_2/4jk9zwf11yx6h93v9nyv284r0000gn/T/spark-2604a272-4da7-45e9-98a4-02110c71f4db/userFiles-1b562995-6006-47a1-8d98-5102449063fa/dependencies.zip/requests/adapters.py”,第226行,在cert\u验证中
“无效路径:{0}”。格式(cert_loc))
OS错误:找不到合适的TLS CA证书捆绑包,路径无效:/private/var/folders/_2/4jk9zwf11yx6h93v9nyv284r0000gn/T/spark-2604a272-4da7-45e9-98a4-02110c71f4db/userFiles-1b562995-6006-47a1-8d98-5102449063fa/dependencies.zip/certifi/cacert.pem
虽然
boto3
在压缩存档的dependencies.zip/boto3中可以很好地处理依赖项

更新1

我试过记录
certifi.where()
,它给出了日志中提到的相同路径,即

/private/var/folders/_2/4jk9zwf11yx6h93v9nyv284r0000gn/T/spark-2604a272-4da7-45e9-98a4-02110c71f4db/userFiles-1b562995-6006-47a1-8d98-5102449063fa/dependencies.zip/certifi/cacert.pem

这里的问题是,
请求
将尝试读取CA证书作为其SSL验证步骤的一部分,期望这些证书是常规文件。在您的例子中,证书是压缩的,正如调用
certifi.where()
所暗示的那样

请注意,这是为了解决像这样的情况。在您撰写文章时,此修复程序应该已经在master中,因此您可能使用了较旧版本的
请求

解决方法是在需要SSL验证时指定解压缩证书的路径。使用
bot3
您可以应用与
请求类似的解决方案:

导入证书
从requests.utils导入解压缩路径
cert\u path=提取压缩路径(certifi.where())
ssm=boto3.client(“ssm”,verify=cert\u path)