OpenShift上用pyiceberg对接Hive Metastore遇SSL证书错误的OSError问题
解决PyIceberg连接Minio时的SSL证书验证错误
这个错误是因为PyIceberg访问Minio S3桶时默认会验证SSL证书,而Minio使用的自签名证书或未受信任证书触发了验证失败。以下是可行的解决方案:
方案1:在HiveCatalog初始化时直接禁用SSL验证
在HiveCatalog的构造参数中添加s3_ssl_verify=False,让PyIceberg跳过S3连接的SSL证书校验:
from pyiceberg.catalog.hive import HiveCatalog catalog = HiveCatalog( "docs", uri="thrift://localhost:8087", warehouse=TRINO_HOST, s3_endpoint=S3_HOST, py_io_impl="pyiceberg.io.pyarrow.PyArrowFileIO", s3_access_key_id=S3_ACCESS_KEY, s3_secret_access_key=S3_SECRET_KEY, s3_ssl_verify=False # 新增参数:禁用SSL证书验证 ) print('catalog', catalog.list_namespaces()) table = catalog.load_table(f'{schemaname}.{tablename}')
方案2:通过环境变量全局禁用SSL验证
如果方案1不生效,可以通过环境变量强制跳过验证:
- Linux/macOS终端临时设置:
export PYICEBERG_S3_SSL_VERIFY=false - Windows命令行临时设置:
set PYICEBERG_S3_SSL_VERIFY=false - 或者在Python代码开头添加:
import os os.environ["PYICEBERG_S3_SSL_VERIFY"] = "false"
补充说明
之前list_namespaces操作正常是因为它仅与Hive Metastore的Thrift连接交互,不需要访问Minio存储;而load_table需要读取存储在Minio桶中的Iceberg表元数据文件,这时候才会触发S3连接的SSL验证,因此出现了证书错误。
内容的提问来源于stack exchange,提问作者o.O
相关产品推荐
相关产品推荐

