Spark DataFrame写入Cloud Storage报错:No FileSystem for scheme 'gs'
问题解决:Spark写入GCS报
No FileSystem for scheme "gs"错误 错误原因:你的Spark环境缺少Google Cloud Storage (GCS)的Hadoop文件系统连接器,导致无法识别gs://协议。
以下是Colab环境下的具体修复步骤:
1. 完成Google账号认证(Colab专属)
在代码开头添加账号认证,确保Colab会话有权限访问目标GCS Bucket:
from google.colab import auth auth.authenticate_user()
2. 创建SparkSession时加载GCS连接器依赖并配置参数
修改SparkSession初始化代码,添加GCS连接器的Maven依赖,同时配置Hadoop相关参数:
from pyspark.sql import SparkSession import pandas as pd spark = SparkSession.builder \ .appName("GCS Write Example") \ .config("spark.jars.packages", "com.google.cloud.bigdataoss:gcs-connector-hadoop3:2.2.5") \ .config("spark.hadoop.fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem") \ .config("spark.hadoop.fs.gs.auth.service.account.enable", "false") \ .getOrCreate()
spark.jars.packages:指定适配Hadoop3版本的GCS连接器Maven包(Colab默认Hadoop3环境)fs.gs.impl:指定GCS文件系统的实现类fs.gs.auth.service.account.enable:禁用服务账号认证,适配Colab的用户账号认证逻辑
3. 执行写入操作(可追加覆盖参数)
df = spark.createDataFrame(pd.DataFrame({ 'a': [1, 2], 'b': [2, 4] })) df.write.csv('gs://my_bucket/df', mode="overwrite")
- 添加
mode="overwrite"可避免目标路径已存在时的报错
额外注意事项
- 确保你的Google账号对
my_bucket拥有写入权限 - 若连接器版本不匹配,可选择对应Hadoop版本的最新连接器包
内容的提问来源于stack exchange,提问作者Rishav44
相关产品推荐
相关产品推荐

