3

所以我想做的是使用 AWS Glue 抓取 S3 存储桶上的数据。存储为嵌套 json 和路径的数据如下所示:

s3://my-bucket/some_id/some_subfolder/datetime.json

当运行默认爬虫(无自定义分类器)时,它会根据路径对其进行分区并按预期反序列化 json,但是,我想从文件名中获取时间戳以及在单独的字段中。目前,Crawler 忽略了它。

例如,如果我在以下位置运行爬虫:

s3://my-bucket/10001/fromage/2017-10-10.json

我得到这样的表模式:

  • 分区 1:10001
  • 分区 2: fromage
  • 数组:JSON 数据

我确实尝试添加基于 Grok 模式的自定义分类器:

%{INT:id}/%{WORD:source}/%{TIMESTAMP_ISO8601:timestamp}

在此处输入图像描述

但是,每当我重新运行爬虫时,它都会跳过自定义分类器并使用默认的 JSON 分类器。作为一种解决方案,显然我可以在运行爬虫之前将文件名附加到 JSON 本身,但想知道我是否可以避免这一步?

4

1 回答 1

3

分类器只分析文件中的数据,而不是文件名本身。你想做的事在今天是不可能的。如果您可以更改文件所在的路径,则可以将日期添加为另一个分区:

s3://my-bucket/id=10001/source=fromage/timestamp=2017-10-10/data-file-2017-10-10.json
于 2017-12-13T14:19:41.537 回答