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

向S3存储桶写入数据时遭遇FileNotFoundException异常求助

解决Spark向S3写入Parquet时的FileNotFoundException错误

问题场景

向S3存储桶写入分区Parquet数据时触发如下错误:

java.io.FileNotFoundException: 文件 s3n://data/_temporary/0/_temporary/attempt_20230704174844_0087_m_000005_0 不存在。

执行代码:

df.write.format("parquet").partitionBy("year")
             .mode(SaveMode.Append)
             .save("s3n://data/")

常见修复方案

  • 替换S3协议:放弃使用s3n://,改用s3a://协议。s3a是Hadoop针对S3优化的文件系统实现,能更好处理S3最终一致性问题,避免临时文件同步延迟导致的找不到文件错误。修改代码路径为s3a://data/。
  • 补全S3配置项:确保Spark配置了正确的S3访问凭证及文件系统实现类,示例配置:
    spark.hadoop.fs.s3a.access.key=你的访问密钥
    spark.hadoop.fs.s3a.secret.key=你的秘密密钥
    spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
    
  • 检查存储桶权限与生命周期规则:确认Spark任务拥有S3存储桶的读写权限,同时排查是否有生命周期规则提前删除了_temporary目录下的临时文件。
  • 升级Spark版本:旧版本Spark与S3协议存在兼容缺陷,升级到3.x及以上版本,配合对应版本的Hadoop S3客户端,可解决部分底层适配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:42:02