AWS Spectrum 扫描错误压缩文件意外结束

AWS Spectrum Scan Error Unexpected end of compressed file

我想使用 AWS Spectrum - 基于 S3 中的文件查询 Redshift。

由于您可以选择 S3 中的文件夹或 JSON 文件,我选择使用 JSON 文件作为位置。

错误:

当我引用文件夹中的文件 test 时 - Redshift 工作正常。

当我引用引用文件 testJSON file 并且我尝试执行对整个文件运行的查询时,它失败了:

select count(*)
from test

错误:Unexpected end of compressed file. File may be truncated.

奇怪的是 - 如果我只查询 X 行,它会起作用:

select *
from test
limit 100;

这意味着我创建的 table 的列(当我创建外部 table 时)是正确的。我在 JSON 文件中遗漏了什么吗?以下是我的写法(摘自 AWS Docs):

{
  "entries": [
    {"url":"s3://s3_bucket/SpectrumTest/test.gz", "meta": { "content_length": 4668469 } }
  ]
}

content_lengthbytes中文件的大小。由于文件已更改,但 JSON 清单仍保留旧的 content_length,因此它没有加载整个文件,导致有关压缩文件结尾的错误。

limit 100 起作用的原因是因为 DBeaver 将结果保存在缓存中。

希望这对以后的其他人有所帮助。