所以我要做的是使用AWS Glue抓取S3存储桶上的数据。存储为嵌套json和路径的数据如下所示:
s3://my-bucket/some_id/some_subfolder/datetime.json
当运行默认抓取工具(没有自定义分类器)时,它会根据路径对其进行分区并按预期反序列化json,但是,我希望从单独的字段中获取文件名的时间戳。现在Crawler省略了它。
例如,如果我在上面运行抓取工具:
s3://my-bucket/10001/fromage/2017-10-10.json
我得到这样的表架构:
我确实尝试添加基于Grok模式的自定义分类器:
%{INT:id}/%{WORD:source}/%{TIMESTAMP_ISO8601:timestamp}
但是,每当我重新运行crawler时,它都会跳过自定义分类器并使用默认的JSON。作为一个解决方案,显然我可以在运行爬虫之前将文件名附加到JSON本身,但是想知道我是否可以避免这一步骤?
答案 0 :(得分:1)
分类器仅分析文件中的数据,而不是文件名本身。你今天想做什么是不可能的。如果您可以更改文件所在的路径,则可以将日期添加为另一个分区:
s3://my-bucket/id=10001/source=fromage/timestamp=2017-10-10/data-file-2017-10-10.json