AWS Glue ETL 作业中的 Boto3 Glue

Posted

技术标签:

【中文标题】AWS Glue ETL 作业中的 Boto3 Glue【英文标题】:Boto3 Glue in AWS Glue ETL Job 【发布时间】:2021-08-09 16:12:39 【问题描述】:

我正在运行 AWS Glue ETL 作业 (Pyspark),我在其中创建了 Glue 的 boto3 客户端来启动爬虫并执行其他一些 PySpark 处理。问题是 Glue 作业在调用 start_crawler 后继续运行。它既不给出任何错误,也不结束或启动爬虫。我的代码 sn-p 如下:

import sys
import boto3
import time

glue_client = boto3.client('glue', region_name = 'us-east-1')
crawler_name = 'test_crawler'
    
print('Starting crawler...')
print(crawler_name)
glue_client.start_crawler(Name=crawler_name)

如果我在 Python Shell Glue 作业中执行相同的代码,它会成功启动爬虫并终止作业。我在这里做错了什么还是我需要做一些特定的 w.r.t Glue ETL 工作?

编辑:我的 Glue 作业附加了一个 Glue 连接,我用它来连接到 RDS。如果我删除它,那么这段代码可以正常工作。但我需要这个连接才能连接到 RDS。有什么帮助吗?

【问题讨论】:

能不能把爬虫块去掉,测试一下能不能用RDS读写? 这可能是由于 VPC 设置,RDS 应该在导致连接超时的 VPC 内。此链接可能会有所帮助aws.amazon.com/blogs/big-data/… 【参考方案1】:

这不是对您问题的回答,而只是一个提示。 我认为在同一工作中启动爬虫并不是一个好主意。您无法控制爬虫何时完成以及它是否完成得好。 我要做的是创建一个 AWS Step Function 并创建工作流,首先是粘合作业,完成后,下一步将是爬虫。这样您就可以控制和监控流程。

【讨论】:

爬虫只是一个例子。任何胶水/athena boto3 调用都不起作用。

以上是关于AWS Glue ETL 作业中的 Boto3 Glue的主要内容,如果未能解决你的问题,请参考以下文章

从 AWS Redshift 到 S3 的 AWS Glue ETL 作业失败

AWS Glue ETL 作业的 Scala 和 Java 版本是啥?

手动设置 AWS Glue ETL 书签

Python/Pyspark 迭代代码(用于 AWS Glue ETL 作业)

AWS Glue 抓取动态 S3 路径位置

如何在数据加载之前截断 AWS Glue 作业中的 RDS 表?