4

我有一个 S3 位置s3://bucket-name/folder-name/,其中包含一个子文件夹,其名称是动态生成的,其中包含短语_Top10InvoiceIds. 该子文件夹由.csv.csv.metadata文件组成。我正在使用胶水爬虫仅爬取 csv 文件并在 Athena 中查看它们。但我无法排除这些.csv.metadata文件。我已经尝试了所有可能的正则表达式模式作为 glob 值。

我的一些尝试是:

  1. *_Top10InvoiceIds/ *.metadata
  2. *_Top10InvoiceIds/ * .* metadata
  3. *_Top10InvoiceIds/ *. *.metadata
  4. *_Top10InvoiceIds/ * .csv.metadata
  5. ** .metadata
  6. * .metadata
  7. * .csv.metadata
  8. * /*.metadata

如果有人可以帮助我找出模式或提出另一种方法来做同样的事情,那就太好了。

4

3 回答 3

3

听起来您试图通过在 Glue Crawlers 中使用排除项来阻止 .metadata 文件在 Athena 表中显示为数据。

Glue Crawlers 用于为所述表创建表定义和相关元数据。就将数据填充到表中而言,这就是 Athena:

履带式

连接到数据存储(源或目标)的程序,通过分类器的优先级列表确定您的数据的架构,然后在 AWS Glue 数据目录中创建元数据表。

https://docs.aws.amazon.com/glue/latest/dg/components-key-concepts.html

在 Athena 中创建的表会抓取您在包含模式中列出的存储桶路径下的所有数据:

重要的

Athena 读取存储在 's3://bucketname/prefix/' 下的所有数据。如果您有不希望 Athena 读取的数据,请不要将该数据存储在与您希望 Athena 读取的数据相同的 Amazon S3 前缀中。如果您正在利用分区,为了确保 Athena 扫描分区内的数据,您的 WHERE 过滤器必须包含该分区。有关详细信息,请参阅表位置和分区。

https://docs.aws.amazon.com/athena/latest/ug/tables-location-format.html

我想如果你想从你的表中排除数据,它需要自己的子文件夹

于 2020-01-08T22:07:35.130 回答
3

这里给你一个简单的答案:

Athena将不支持 Glue 排除模式。这些模式仅用于排除您在抓取时不想扫描的不必要文件并在 Glue ETL 中使用。因此,如果您想排除这些 .metadata 文件,则需要编写一个自动化脚本来删除它们。

于 2020-01-09T04:27:14.103 回答
0

尝试使用**/*.csv.metadata**/*.metadata排除模式

于 2019-02-19T18:49:01.783 回答