You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:53:32