amazon-web-services - AWS Glue Crawler 可以处理同一文件夹中的不同文件类型吗?
问题描述
我已按以下结构向 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。这是最好的方法吗?
还是我必须完全重新做存储桶/文件夹/文件名设计?
解决方案
Amazon Redshift 会加载给定路径中的所有文件,而不考虑文件名。
Redshift 不会利用分区(Redshift Spectrum 会,但不是普通的 Redshift COPY 语句),但它会从给定路径中的任何子目录中读取文件。
因此,如果要将数据加载到单独的表(UsageReport、SearchReport、TimingReport)中,它们需要位于单独的路径(目录)中。指定目录层次结构中的所有文件必须具有相同的格式,并将通过COPY
命令加载到同一个表中。
另一种方法是您可以使用清单文件指向特定文件,但这可能会变得混乱。
底线:将文件移动到单独的目录。
推荐阅读
- c# - 如何使用 jquery 在 html 页面中调用 web api?
- c# - 使用 CSVHelper 动态映射嵌套对象
- spring-boot - JPA 映射问题
- c++ - QUdpSocket - 数据报被接收两次,为什么?
- python - 找出随机单词是否构成由最后一个字母和第一个字母连接的单词序列(单词足球)
- c - 无符号函数必须返回一些东西吗?
- node.js - TypeError: User.findOne(...).than 不是函数
- java - 在我的主类的类中使用 getter 和 setter 方法
- php - 带有while循环的mysql节点js动态数组
- xml - Cvc-elt.1.a:找不到元素的声明