我想使用AWS Spectrum -基于S3文件的Redshift查询。
由于您可以选择S3中的文件夹或JSON文件,因此我选择使用JSON文件作为位置。
错误:
当我引用文件test
在一个文件夹-红移工作完美。
当我引用引用文件test
的JSON file
时,我尝试在整个文件上运行查询,它失败了:
select count(*)
from test
错误:Unexpected end of compressed file. File may be truncated.
奇怪的是-如果我只查询X行,它工作:
select *
from test
limit 100;
这意味着我创建的表(当我创建外部表时)的列是正确的。我在JSON文件中遗漏了什么吗?我是这样写的(摘自AWS文档):
{
"entries": [
{"url":"s3://s3_bucket/SpectrumTest/test.gz", "meta": { "content_length": 4668469 } }
]
}
content_length
为bytes
中的文件大小。因为文件改变了,但JSON manifest仍然使用旧的content_length,它没有加载整个文件,导致关于压缩文件结束的错误。
做limit 100
工作的原因是因为DBeaver将结果保存在缓存中。
希望这对将来的任何人都有帮助。