【问题标题】:Can AWS Glue Crawler handle different file types in same folder?AWS Glue Crawler 可以处理同一文件夹中的不同文件类型吗?
【发布时间】:2019-11-07 20:49:12
【问题描述】:

我已按以下结构向 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。这是最好的方法吗?

还是要彻底重新做bucket/文件夹/文件名设计?

【问题讨论】:

  • 您打算如何使用这些文件?您会将它们与 Amazon Athena 或 Amazon Redshift Spectrum 一起使用吗?
  • 使用 AWS Glue 读取文件并加载到 Redshift(不是 Redshift Spectrum)。
  • 我的建议:重做你的设计,让每个文件夹都有兼容的数据

标签: amazon-web-services amazon-redshift aws-glue aws-glue-data-catalog


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 非常感谢!我将存储桶结构更改为: s3://chum-bucket/UsageReport/YYYY/MM/UsageReport*.zip s3://chum-bucket/SearchReport/YYYY/MM/SearchReport*.zip s3://chum- bucket/TimingReport/YYYY/MM//TimingReport*.zip 并设置3个爬虫。
  • @BobMcCormick 一个爬虫就足够了:您可以指定多个路径由同一个爬虫“爬取”。具体根据您的示例,您将提供路径 s3://chum-bucket/UsageReport/s3://chum-bucket/SearchReport/s3://chum-bucket/TimingReport/
猜你喜欢
  • 2020-09-26
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多