Amazon web services 基于文件名的AWS Glue自定义爬虫程序
所以我要做的是用AWS胶水在S3存储桶上抓取数据。存储为嵌套json和路径的数据如下所示:Amazon web services 基于文件名的AWS Glue自定义爬虫程序,amazon-web-services,amazon-s3,amazon-athena,aws-glue,Amazon Web Services,Amazon S3,Amazon Athena,Aws Glue,所以我要做的是用AWS胶水在S3存储桶上抓取数据。存储为嵌套json和路径的数据如下所示: s3://my-bucket/some_id/some_subfolder/datetime.json 当运行默认爬虫程序(没有自定义分类器)时,它会根据路径对其进行分区,并按预期反序列化json,但是,我希望从文件名中获得一个时间戳,也可以在一个单独的字段中。现在爬虫忽略了它 例如,如果我在上运行爬虫程序: s3://my-bucket/10001/fromage/2017-10-10.json 我
s3://my-bucket/some_id/some_subfolder/datetime.json
当运行默认爬虫程序(没有自定义分类器)时,它会根据路径对其进行分区,并按预期反序列化json,但是,我希望从文件名中获得一个时间戳,也可以在一个单独的字段中。现在爬虫忽略了它
例如,如果我在上运行爬虫程序:
s3://my-bucket/10001/fromage/2017-10-10.json
我得到如下表模式:
s3://my-bucket/some_id/some_subfolder/datetime.json
- 分区1:10001
- 分区2:fromage
- 数组:JSON数据
%{INT:id}/%{WORD:source}/%{TIMESTAMP_ISO8601:timestamp}
然而,每当我重新运行爬虫程序时,它都会跳过自定义分类器并使用默认的JSON分类器。显然,作为一种解决方案,我可以在运行爬虫程序之前将文件名附加到JSON本身,但我想知道是否可以避免这一步 分类器只分析文件中的数据,而不是文件名本身。你今天想做的事是不可能的。如果可以更改文件放置的路径,则可以将日期添加为另一个分区:
s3://my-bucket/id=10001/source=fromage/timestamp=2017-10-10/data-file-2017-10-10.json
分类器不仅在基于相对路径添加分区时分析数据。因此,我只是希望能够对其进行爬网,而不是通过自定义地图还原来完成此任务。我找不到任何参考,表明爬网程序将分类器应用于找到的文件的相对路径。AWS文档指出爬虫程序(而非分类器)根据文件前缀对数据进行分区。在该幻灯片的第23张幻灯片上,它显示了如何将分区作为算法的一部分进行计算,以确定数据是否属于同一架构。但它并不建议将分类器应用于文件路径。