amazon-web-services - 从 S3 中的 Parquet list 进行 Redshift 复制失败,并表示 MANIFEST 参数需要 S3 对象的完整路径

标签 amazon-web-services amazon-s3 amazon-redshift amazon-kinesis-firehose

我正在使用 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/

相关文章:

node.js - 如何将缓冲区保存到 S3 存储桶中

amazon-web-services - 如何在AWS Lambda上安装fontconfig?

amazon-web-services - 如何使用 Ansible 从 host_vars 中提取 AWS 标签值

amazon-web-services - 将存储桶策略附加到由无服务器生成的存储桶

ruby-on-rails - 雾、Amazon S3 和 Carrierwave Rails 问题

amazon-ec2 - 为什么我会得到 "Your account does not support the EC2-Classic Platform in this region."?

amazon-web-services - [XX000][500310] [Amazon](500310) 无效操作 : Parsed manifest is not a valid JSON object

node.js - 来自 lambda 的 context.awsRequestId

node.js - 如何将同名文件上传到 Amazon S3 并覆盖现有文件?

rest - 通过 REST API 公开 Redshift 表