使用清单从多个 s3 文件夹加载红移表

Posted

技术标签:

【中文标题】使用清单从多个 s3 文件夹加载红移表【英文标题】:Loading redshift table from multiple s3 folder using manifest 【发布时间】:2021-03-03 21:32:16 【问题描述】:

我正在使用复制命令使用清单从 s3 加载 Redshift 表。

要求是加载多个文件(跨多个文件夹),例如

Path1 : s3://bucket_name/folder_name/folder_1/folder/part*.parquet
Path2 : s3://bucket_name/folder_name/folder_2/folder/part*.parquet
Path3 : s3://bucket_name/folder_name/folder_3/folder/part*.parquet

每个路径将有 ~1000 个文件

如何创建清单来加载它?

我创建了如下清单:


    "fileLocations": [ 
"url":"s3://bucket_name/folder_name/folder_1/folder/part*.parquet", "mandatory":false,

 "url":"s3://bucket_name/folder_name/folder_3/folder/part*.parquet", "mandatory":false,

 "url":"s3://bucket_name/folder_name/folder_2/folder/part*.parquet", "mandatory":false,

 ]

但我收到一个错误:

清单不包含文件列表。

【问题讨论】:

您是否有任何文档表明清单文件中允许使用通配符? 【参考方案1】:

来自Using a manifest to specify data files - Amazon Redshift:

以下示例显示了从不同存储桶加载文件的 JSON 文件,文件名以日期戳开头:


  "entries": [
    "url":"s3://mybucket-alpha/2013-10-04-custdata", "mandatory":true,
    "url":"s3://mybucket-alpha/2013-10-05-custdata", "mandatory":true,
    "url":"s3://mybucket-beta/2013-10-04-custdata", "mandatory":true,
    "url":"s3://mybucket-beta/2013-10-05-custdata", "mandatory":true
  ]

问题可能是您对fileLocationsentries 的使用。

我也怀疑不允许使用通配符

【讨论】:

以上是关于使用清单从多个 s3 文件夹加载红移表的主要内容,如果未能解决你的问题,请参考以下文章

我可以直接查询以镶木地板格式存储在 s3 中的数据的红移表吗

有没有办法通过数据管道以预定义的顺序将文件从 S3 复制到红移

如何从 pcollection 将多个值写入红移表

来自多个输入文件的填充表

使用多个清单文件从 S3 加载到 Redshift?

反正有没有在红移表中只保留一周的数据