Python Pyspark在压缩包后找不到合适的TLS CA证书
我已经用它创建了一个Pyspark应用程序。在示例项目中,dependencies.zip是一个包含实际代码的依赖项包。我正在使用将spark提交作业的元数据发布到启用https的端点 我提交的工作如下: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
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)