我试图将表属性分配给用爬虫创建的表。
这样做的目的是让所有使用爬虫创建的表具有相同的默认属性(加上它们通常拥有的属性)。
我检查了爬虫创建界面中的选项,但没有看到这样的选项。在创建表之后创建一个python boto3脚本来修改表属性值,这是我唯一想到的事情。
如果这在默认的爬虫功能中是不可能的,那么将表属性附加到使用某个爬虫创建的每个表上的可行方法是什么?
编辑:一个可能的解决方案是创建一个lambda函数,检查胶水表中是否存在自定义参数,如果没有创建它们。
发布于 2021-01-29 09:35:39
选项1
直接添加定义中的字段可能是处理此问题的最佳方法(使用CloudFormation)。
选项2
我想您不直接添加表字段是有原因的。如果这应该由数据本身触发,那么您可能需要查看的干净方式是编写自定义分类器:
https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html
选项3
当您需要快速攻击时,您可以通过使用缺少的模式信息爬行一个额外的文件来合并模式,并让爬虫合并字段:例如,如果您有JSON S3文件(或者您的用例的任何一致格式),您可以添加一个附加的init文件并在那里添加列。设置
{
"Version": 1.0,
"Grouping": {
"TableGroupingPolicy": "CombineCompatibleSchemas" }
}AWS医生的引文:
“为了帮助演示此选项,假设您定义了一个包含路径S3://bucket/table1 1/的爬虫。当爬虫运行时,它会找到两个具有以下特征的JSON文件:
文件1-S3://bucket/table1 1/年份=2017/data1.json
文件2-S3://bucket/table1 1/年份=2018/data2.json
默认情况下,爬虫会创建两个表,名为year_2017和year_2018,因为模式不够相似。但是,如果选项为每个S3路径创建一个模式,并且如果数据是兼容的,则爬虫将创建一个表。表具有模式。
A:int,B:int,C:int,D:int和partitionKey年:string。
请参阅https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html
https://stackoverflow.com/questions/65811439
复制相似问题