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

PySpark读取S3分区下gzip格式JSON文件提示找不到文件如何解决

可行解决方案

  • 清理Hadoop S3A客户端层缓存
    Spark默认使用Hadoop的S3A客户端访问S3,该客户端自带的元数据缓存优先级高于Spark表缓存,你之前的刷新操作没有触达这层缓存。执行以下配置后再重试读取:
# 临时禁用S3A客户端缓存
spark.conf.set("fs.s3a.metadata.cache.enabled", "false")
spark.conf.set("fs.s3a.impl.disable.cache", "true")

# 重试读取
spark.read.json('s3://my_bucket/my_prefix/2021/08/31/08/53/my_file.gz').show()
  • 显式指定压缩格式
    避免Spark自动识别压缩格式出错,读文件时主动指定gzip压缩参数:
spark.read.option("compression", "gzip")\
    .json('s3://my_bucket/my_prefix/2021/08/31/08/53/my_file.gz').show()
  • 校验EMR执行角色权限
    boto3调用使用的是SageMaker的执行角色,而Spark作业使用的是EMR集群的EC2实例角色,两者权限可能不同。请确认EMR实例角色对目标文件拥有s3:GetObject权限,而非仅拥有路径枚举权限。
  • 清空Spark全局缓存
    清理Spark Catalog层的所有缓存后重试:
spark.catalog.clearCache()
# 重新读取文件,不要复用之前创建的临时视图
spark.read.json('s3://my_bucket/my_prefix/2021/08/31/08/53/my_file.gz').show()
  • 验证文件本身合法性
    用boto3将目标文件下载到SageMaker本地,解压后校验是否为合法JSON格式,再尝试用Spark读取本地文件确认文件本身无损坏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:09:03