2

我已按以下结构向 S3 提交报告:

s3://chum-bucket/YYYY/MM/DD/UsageReportYYYYMMDD.zip
s3://chum-bucket/YYYY/MM/DD/SearchReportYYYYMMDD.zip
s3://chum-bucket/YYYY/MM/DD/TimingReportYYYYMMDD.zip

YYYY MM DD 每天都在变化。文件名中的 YYYMMDD 在那里,因为文件在移动到 S3 之前都进入服务器上的一个目录。

我希望有 1 或 3 个爬虫,它们将 3 个表传送到目录,每种类型的报告一个。这可能吗?我似乎无法指定

s3://chum-bucket/**/UsageReport*.zip
s3://chum-bucket/**/SearchReport*.zip
s3://chum-bucket/**/TimingReport*.zip

我可以编写一个不包括 SearchReport 和 TimingReport 的爬虫,因此只爬取 UsageReport。这是最好的方法吗?

还是我必须完全重新做存储桶/文件夹/文件名设计?

4

1 回答 1

2

Amazon Redshift 会加载给定路径中的所有文件,而不考虑文件名。

Redshift 不会利用分区(Redshift Spectrum 会,但不是普通的 Redshift COPY 语句),但它会从给定路径中的任何子目录中读取文件。

因此,如果要将数据加载到单独的表(UsageReport、SearchReport、TimingReport)中,它们需要位于单独的路径(目录)中。指定目录层次结构中的所有文件必须具有相同的格式,并将通过COPY命令加载到同一个表中。

另一种方法是您可以使用清单文件指向特定文件,但这可能会变得混乱。

底线:将文件移动到单独的目录。

于 2019-06-26T03:03:54.363 回答