如何通过Scala API在AWS Glue作业中调用AWS Glue爬虫?
在AWS Glue Scala作业中调用Glue Crawler的StartCrawler API
核心实现思路
在Scala版Glue作业中,需借助AWS SDK for Java(Scala兼容)的GlueClient调用startCrawler操作。GlueContext仅用于ETL数据处理,不直接提供Crawler客户端实例,因此需要自行创建GlueClient。
步骤与代码示例
1. 导入依赖包
Glue作业环境已内置AWS SDK,直接导入以下类即可:
import software.amazon.awssdk.regions.Region import software.amazon.awssdk.services.glue.GlueClient import software.amazon.awssdk.services.glue.model.StartCrawlerRequest
2. 完整作业代码示例
以下是可直接运行的Glue Scala作业代码,包含客户端创建、API调用及资源清理逻辑:
import com.amazonaws.services.glue.GlueContext import com.amazonaws.services.glue.util.GlueArgParser import com.amazonaws.services.glue.util.Job import org.apache.spark.SparkContext import software.amazon.awssdk.regions.Region import software.amazon.awssdk.services.glue.GlueClient import software.amazon.awssdk.services.glue.model.StartCrawlerRequest object CrawlerStarterJob { def main(sysArgs: Array[String]) { val sc: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(sc) // 解析作业参数(支持传入Crawler名称作为参数) val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME", "CRAWLER_NAME").toArray) Job.init(args("JOB_NAME"), glueContext, args.asJava) // 创建GlueClient(匹配目标Crawler所在区域) val targetRegion = Region.of("us-east-1") // 替换为你的Crawler区域 val glueClient = GlueClient.builder() .region(targetRegion) .build() try { // 构建启动请求并调用API val crawlerName = args("CRAWLER_NAME") val startRequest = StartCrawlerRequest.builder() .name(crawlerName) .build() glueClient.startCrawler(startRequest) println(s"Crawler [$crawlerName] 已成功启动") } catch { case e: Exception => println(s"启动Crawler失败: ${e.getMessage}") throw e // 抛出异常终止作业,便于在Glue控制台查看错误 } finally { // 关闭客户端释放资源 glueClient.close() } Job.commit() } }
关键注意事项
- IAM权限配置:确保Glue作业使用的IAM角色包含
glue:StartCrawler权限,可在角色策略中添加以下语句:{ "Effect": "Allow", "Action": "glue:StartCrawler", "Resource": "arn:aws:glue:<你的区域>:<你的账号ID>:crawler/<目标Crawler名称>" } - 区域一致性:
GlueClient的区域必须与目标Crawler所在区域一致,避免跨区域调用报错。 - 异常处理:添加捕获逻辑可避免作业因Crawler启动失败直接崩溃,同时便于排查问题。
内容的提问来源于stack exchange,提问作者Andrei Markhel
相关产品推荐
相关产品推荐

