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

Posted

技术标签:

【中文标题】AWS Spectrum 扫描错误压缩文件意外结束【英文标题】:AWS Spectrum Scan Error Unexpected end of compressed file 【发布时间】:2021-10-07 11:22:14 【问题描述】:

我想使用 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;

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


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

【问题讨论】:

【参考方案1】:

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

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

希望这对将来的其他人有所帮助。

【讨论】:

以上是关于AWS Spectrum 扫描错误压缩文件意外结束的主要内容,如果未能解决你的问题,请参考以下文章

扫描外部表(S3 数据)时 Redshift Spectrum 中的成本控制

AWS Spectrum 真的需要 = in s3 location 才能将其理解为 hive 格式吗?

AWS Spectrum 为 AWS Glue 生成的镶木地板文件提供空白结果

AWS Redshift Spectrum 十进制类型读取 parquet double 类型

解析错误:语法错误,文件意外结束,期待'`' [重复]

解析错误:语法错误,文件意外结束[重复]