Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 基于文件名的AWS Glue自定义爬虫程序_Amazon Web Services_Amazon S3_Amazon Athena_Aws Glue - Fatal编程技术网

Amazon web services 基于文件名的AWS Glue自定义爬虫程序

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 我

所以我要做的是用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
  • 分区1:10001
  • 分区2:fromage
  • 数组:JSON数据
我尝试添加基于Grok模式的自定义分类器:

%{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张幻灯片上,它显示了如何将分区作为算法的一部分进行计算,以确定数据是否属于同一架构。但它并不建议将分类器应用于文件路径。