0

我无法描述 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 模式?

如果没有,我怎样才能用排除模式实现同样的目标?

任何帮助深表感谢。

4

0 回答 0