Glue Crawler无法排除.csv.metadata文件

时间:2019-02-19 08:16:50

标签: amazon-s3 aws-glue aws-glue-data-catalog

我有一个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

如果有人可以帮助我弄清楚模式或建议另一种方式来做,那就太好了。

3 个答案:

答案 0 :(得分:2)

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

Glue Crawlers用于为该表创建表定义和关联的元数据。就将数据填充到表而言,就是雅典娜:

爬虫

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

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

雅典娜(Athena)制成的表格会在您在包含模式中列出的存储桶路径下抓取所有数据:

重要

Athena读取存储在“ s3:// bucketname / prefix /”下的所有数据。如果你有 您不希望雅典娜读取的数据,请勿将该数据存储在同一数据中 Amazon S3前缀是您希望Athena读取的数据。如果您正在利用 分区,以确保Athena扫描分区中的数据,请使用WHERE过滤器 必须包括分区。有关更多信息,请参见表位置和 分区。

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

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

答案 1 :(得分:2)

这是一个简单的答案:

雅典娜不会兑现胶水排除模式。这些模式仅用于排除在爬网时不需要扫描的不必要文件,并用于Glue ETL。因此,如果要排除这些.metadata文件,则需要编写一个自动化脚本来删除它们。

答案 2 :(得分:0)

尝试使用**/*.metadataSet<String> greppedKeys = expirationMap.keySet().stream() // keyset only .filter(key -> expirationMap.get(key) > 3L) // X here being 3L .collect(Collectors.toSet()); // all keys would be unique anyway 排除模式