我正在使用 Firehose 将 Parquet 格式的记录放入 S3 存储桶中。我已经手动定义了一个粘合表。
所以我有一个像这样的 list
{
"entries": [
{"url":"s3://my-bucket/file1.parquet"},
{"url":"s3://my-bucket/file2.parquet"}
]
}
还有一个复制命令,例如
COPY schema_name.table_name
FROM 's3://my-bucket/manifest.json'
CREDENTIALS 'aws_iam_role=arn:aws:iam::123456:role/RoleWithPermissionToRedshiftAndBucket'
PARQUET
MANIFEST;
它给出了这个神秘的错误,在 Google 上有 0 个结果。
[XX000][500310] [Amazon](500310) Invalid operation: COPY with MANIFEST parameter requires full path of an S3 object.
Details:
-----------------------------------------------
error: COPY with MANIFEST parameter requires full path of an S3 object.
code: 8001
context:
query: 23514459
location: scan_range_manager.cpp:795
process: padbmaster [pid=108497]
-----------------------------------------------;
在我看来,我肯定指定了完整路径,所以我不确定发生了什么。
最佳答案
有一个错误是存储桶位于不同的区域,这也会阻止它工作。
您可能收到此错误消息的原因之一是存储桶是否位于另一个 AWS 账户中。
但真正为我解决的问题是将 content_length 添加到 list 中,因为它是 Parquet 所必需的。
{
"entries": [
{
"url":"s3://my-bucket/file1.parquet",
"mandatory":true,
"meta":{
"content_length":2893394
}
},
{
"url":"s3://my-bucket/file2.parquet",
"mandatory":true,
"meta":{
"content_length":2883626
}
}
]
}
显然,如果您省略 content_length,您将收到一条不相关的错误消息。这家伙犯了同样的错误,并收到一条错误消息:
File has an invalid version number
Error while loading parquet format file into Amazon Redshift using copy command and manifest file
关于amazon-web-services - 从 S3 中的 Parquet list 进行 Redshift 复制失败,并表示 MANIFEST 参数需要 S3 对象的完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60923776/