amazon-s3 - AWS Glue Crawler S3 包含/排除模式
问题描述
我无法描述 S3 存储桶中 .csv 文件的路径以构建 AWS Glue 表以使用 AWS Athens 进行查询。
数据文件的路径为:
/bucket-name/YYYY/MM/DD/CC/CC-YYYY-MM-DD.csv
e.g.:
/bucket-name/2019/01/01/AR/AR-2019-01-01.csv
/bucket-name/2019/01/01/TR/TR-2019-01-01.csv
...
/bucket-name/2019/01/02/AR/AR-2019-01-02.csv
/bucket-name/2019/01/02/TR/TR-2019-01-02.csv
...
其中 YYYY、MM 和 DD 是日期元素,CC 是国家代码。
其中,我只想选择特定国家的文件来建表。
这些文件夹还包含表单中的临时文件
/bucket-name/YYYY/MM/DD/CC/hhmm.csv
e.g.
/bucket-name/2019/01/01/AR/0001.csv
/bucket-name/2019/01/01/AR/0002.csv
/bucket-name/2019/01/01/TR/0001.csv
/bucket-name/2019/01/01/TR/0002.csv
...
我想从 Glue 表中排除。
我尝试在包含路径中使用 glob 模式,以便:
s3://bucket-name/2019/??/??/TR/TR-*.csv
爬虫运行8分钟后没有创建表!对于一个小数据集。
在得出包含路径中不允许使用 glob 模式的结论后,我尝试使用带否定的排除模式来指定包含模式:
include path: s3://bucket-name/2019/
exclude patterns: [!-TR]
这没有按预期工作:
- 结果确实包括有 T 的国家,而不仅仅是 TR
- 不排除 .../0001.csv 格式的临时文件(我希望如此,因为 [!-] 排除模式)
- 它创建了单独的文件,尽管我指定了“为每个 S3 路径创建一个模式”选项
- 创建几个表后,进程以“内部服务异常”退出
- 这些表在 Athena 预览中不返回任何数据,尽管 Glue 表详细信息表明其中有对象
所以;
包含路径中是否不允许使用 glob 模式?
如果没有,我怎样才能用排除模式实现同样的目标?
任何帮助深表感谢。