爬虫可以更新 AWS Glue 中导入的表吗?

Posted

技术标签:

【中文标题】爬虫可以更新 AWS Glue 中导入的表吗?【英文标题】:Can crawlers update imported tables in AWS Glue? 【发布时间】:2017-10-26 20:05:21 【问题描述】:

我正在熟悉 AWS Glue 中的爬虫。我从 Athena 导入了一个数据库目录,并希望每天爬取这些表的数据位置,以便在添加数据时自动更新它们的分区。

但是,我的爬虫似乎只创建新表,与从 Athena 导入的表不同。他们似乎没有更新我现有的表格。有没有办法做到这一点?在他们的文档中没有看到任何提及。

【问题讨论】:

【参考方案1】:

您可能需要添加一个自定义分类器,其工作是将数据分类到数据目录中的单独表中。您可能正在使用不知道如何唯一标识您的架构的默认分类器。

什么是分类器:http://docs.aws.amazon.com/glue/latest/dg/add-classifier.html

【讨论】:

自定义分类器本质上是您编写的代码,用于根据您自己的自定义逻辑将数据分类到特定组中,AWS 文档关于如何编写这样的分类器在这里:docs.aws.amazon.com/glue/latest/dg/custom-classifier.html 我不认为这是相关的 - 分类器用于解析模式 正确,本例中的表是胶水目录中的模式表【参考方案2】:

尚未对此进行测试,但请尝试update您导入的表中的以下字段:

"CreatedBy": "arn:aws:sts::000000000000:assumed-role/YOUR_CLAWLER_ROLE/AWS-Crawler"
"Parameters": 
        "CrawlerSchemaDeserializerVersion": "1.0",
        "compressionType": "none",
        "UPDATED_BY_CRAWLER": "you_crawler_name_for_this_table",
        "CrawlerSchemaSerializerVersion": "1.0"
    

我跳过了与爬虫无关的属性。这个想法是更新您的表,使其看起来像“由爬虫创建”。可能在这个爬虫之后会更新它。 :)

要获得完整的表定义,请使用 get-table,但请记住,此输出与 update-table 几乎没有区别

如果发布你的结果会很好,因为我不能在最近的时间尝试这个。 :(

希望对你有帮助。

【讨论】:

【参考方案3】:

你所要做的,就是把UPDATED_BY_CRAWLER设置为你的爬虫的名字,爬虫会从下次开始抓取。 请注意,如果您定义了任何自定义字段,它们将被爬虫移除。

【讨论】:

你实际测试过这个吗?即使在使用所有添加的爬虫参数的虚拟值模拟目标表之后,我也没有任何运气。

以上是关于爬虫可以更新 AWS Glue 中导入的表吗?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Glue - 是不是使用爬虫

AWS Glue - boto3 爬虫未创建表

使用 AWS Glue 爬虫进行智能采样

AWS Glue 无法从爬虫创建数据库:权限被拒绝

AWS Glue to Redshift:是不是可以替换、更新或删除数据?

AWS Glue to Redshift:是否可以替换,更新或删除数据?