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

AWS Spectrum查询报Unexpected end of compressed file错误如何解决?

问题原因及解决方案

核心问题

你遇到的报错是因为JSON清单文件中填写的content_length值和S3上test.gz文件的实际字节大小不匹配导致的。

  • 执行带limit的查询时,Redshift Spectrum仅需要读取文件开头的部分数据即可返回指定行数的结果,不需要遍历完整文件,因此不会触发全文件的解压校验,所以能正常运行。
  • 执行count(*)这类需要扫描全表的查询时,Spectrum会严格按照你在清单中声明的content_length读取对应长度的字节,如果你填写的数值大于文件实际大小,就会读到不存在的内容,触发Unexpected end of compressed file报错;如果填写的数值小于实际大小,会导致数据读取不全。

解决方案

你可以二选一处理:

  1. 直接删除JSON清单中meta下的content_length字段,该字段为可选配置,删除后Spectrum会自动从S3对象元数据中获取文件的真实大小,无需手动声明。修改后的JSON清单示例如下:
{
  "entries": [
    {"url":"s3://s3_bucket/SpectrumTest/test.gz"}
  ]
}
  1. 如果你需要保留content_length配置,就到S3控制台查看test.gz对象的实际字节大小,将content_length的值替换为和实际大小完全一致的数值即可。

额外说明

你直接引用S3文件夹时查询正常,就是因为这种场景下Spectrum会自动拉取每个文件的真实大小元数据,不存在手动填错数值的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:36:02