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 可以完美运行。
当我引用引用文件 test
的 JSON 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_length
是bytes
中文件的大小。由于文件已更改,但 JSON 清单仍保留旧的 content_length,因此它没有加载整个文件,导致压缩文件结尾出现错误。
limit 100
起作用的原因是 DBeaver 将结果保存在缓存中。
希望这对将来的其他人有所帮助。
【讨论】:
以上是关于AWS Spectrum 扫描错误压缩文件意外结束的主要内容,如果未能解决你的问题,请参考以下文章
扫描外部表(S3 数据)时 Redshift Spectrum 中的成本控制
AWS Spectrum 真的需要 = in s3 location 才能将其理解为 hive 格式吗?
AWS Spectrum 为 AWS Glue 生成的镶木地板文件提供空白结果