AWS Glue基于文件名的自定义爬网程序

时间:2017-11-17 21:26:52

标签: amazon-web-services amazon-s3 amazon-athena aws-glue

所以我要做的是使用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}

enter image description here

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

1 个答案:

答案 0 :(得分:1)

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

s3://my-bucket/id=10001/source=fromage/timestamp=2017-10-10/data-file-2017-10-10.json