[英]Redshift copy from Parquet manifest in S3 fails and says MANIFEST parameter requires full path of an S3 object
我正在使用 Firehose 将 Parquet 格式的记录放入 S3 存储桶中。 我已经手动定义了一个胶水表。
所以我有一个清单
{
"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 添加到清单中,因为镶木地板需要它。
{
"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
确保您设置了正确的 CREDENTIALS 或 IAM_ROLE。
我通过更改我的 IAM_ROLE 修复了这个完全相同的错误COPY with MANIFEST parameter requires full path of an S3 object
的COPY with MANIFEST parameter requires full path of an S3 object
- 从一个没有权限加载到这个表的角色。
(这方面的 Redshift 错误消息不好)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.