Docker环境下Bitnami Spark镜像连接GCS证书读取失败及解决方案
在Docker Spark容器中读写GCS时证书文件找不到的问题及解决
问题描述
- 环境:Bitnami Spark 3.5.1镜像,gcs-hadoop3-connector 2.2.20
- 已完成操作:安装gcs-hadoop3-connector jar、spark-bigquery jar,创建SparkSession时配置了以下参数:
google.cloud.auth.service.account.enable: true google.cloud.auth.service.account.json.keyfile: <path-to-key.json> - 异常情况:Spark会话初始化成功,但执行GCS写入操作时抛出
java.io.FileNotFoundException,提示找不到credential_key.json。尝试将证书放在本地机器、主容器、worker容器均无效,无法确定Spark的证书查找路径。
写入示例代码:spark.createDataFrame(['a'],['b'],['c']).write.mode("overwrite").parquet('gs://path/to/output')
解决方法
问题已解决,核心是要通过hadoopConfiguration配置证书路径,而非直接在SparkSession参数中设置。具体代码如下:
spark._jsc.hadoopConfiguration().set("google.cloud.auth.service.account.json.keyfile","<path_to_your_credentials_json>")
注意:配置的路径必须指向容器内部的证书文件位置,设置完成后即可正常读写GCS存储。
内容的提问来源于stack exchange,提问作者BlueSteel
相关产品推荐
相关产品推荐

