You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Dataproc中使用Spark Java写入GCS报错,求解决方案

问题解决:Spark写入GCS时的路径与文件名错误

报错原因分析

从报错信息看,存在两个核心问题:

  • 路径格式错误:Spark默认将输出路径解析为HDFS路径(hdfs://dm-service-metanome-m/user/root/gs/...),而非GCS路径,说明你指定的location变量未使用GCS标准路径格式。
  • 文件名含非法字符:生成的时间字符串包含空格(2022-12-27 12:08:48),HDFS/GCS均不允许文件名包含空格,触发IllegalArgumentException。

解决方案

1. 修正GCS路径格式

确保location变量使用GCS官方路径格式:gs://<你的存储桶名称>/<自定义路径>,例如:

String location = "gs://my-gcs-bucket/spark-output";

这样Spark会调用GCS连接器处理输出,而非默认的HDFS。

2. 修改时间格式,移除空格

将日期格式化规则中的空格替换为下划线或其他合法字符,例如把DATE_FORMAT的格式从yyyy-MM-dd HH:mm:ss改为yyyy-MM-dd_HH-mm-ss:

SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");

修正后的完整写入代码示例

String location = "gs://your-bucket-name/your-output-path";
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
javaRDDString.coalesce(1).saveAsTextFile(location + "/" + DATE_FORMAT.format(new Date(System.currentTimeMillis())));

额外验证提示

  • 确认Dataproc集群已启用GCS访问权限(默认Dataproc集群已配置GCS连接器权限,无需额外操作)。
  • 确保GCS存储桶名称正确,且你的服务账号具备该存储桶的写入权限。

内容的提问来源于stack exchange,提问作者Faisal Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:50:27