AWS Spectrum 扫描错误压缩文件意外结束
AWS Spectrum Scan Error Unexpected end of compressed file
我想使用 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;
这意味着我创建的 table 的列(当我创建外部 table 时)是正确的。我在 JSON 文件中遗漏了什么吗?以下是我的写法(摘自 AWS Docs):
{
"entries": [
{"url":"s3://s3_bucket/SpectrumTest/test.gz", "meta": { "content_length": 4668469 } }
]
}
content_length
是bytes
中文件的大小。由于文件已更改,但 JSON 清单仍保留旧的 content_length,因此它没有加载整个文件,导致有关压缩文件结尾的错误。
limit 100
起作用的原因是因为 DBeaver 将结果保存在缓存中。
希望这对以后的其他人有所帮助。
我想使用 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;
这意味着我创建的 table 的列(当我创建外部 table 时)是正确的。我在 JSON 文件中遗漏了什么吗?以下是我的写法(摘自 AWS Docs):
{
"entries": [
{"url":"s3://s3_bucket/SpectrumTest/test.gz", "meta": { "content_length": 4668469 } }
]
}
content_length
是bytes
中文件的大小。由于文件已更改,但 JSON 清单仍保留旧的 content_length,因此它没有加载整个文件,导致有关压缩文件结尾的错误。
limit 100
起作用的原因是因为 DBeaver 将结果保存在缓存中。
希望这对以后的其他人有所帮助。