如何通过Go语言以编程方式取消Google Cloud Dataproc运行中的批处理作业?
取消Google Cloud Dataproc运行中批处理作业的Go实现方案
你遇到的FAILED_PRECONDITION错误,是因为误用了DeleteBatch方法——该方法仅适用于删除已完成的作业,无法终止运行中的任务。要取消正在运行的批处理作业,需使用Go客户端库提供的CancelBatch方法。
实现代码示例
import ( "context" "fmt" dataprocpb "cloud.google.com/go/dataproc/apiv1/dataprocpb" ) // CancelRunningBatch 取消指定的运行中Dataproc批处理作业 func CancelRunningBatch(client *dataprocpb.BatchControllerClient, projectID, region, batchID string) error { ctx := context.Background() // 构造请求,需传入作业的完整资源名称 req := &dataprocpb.CancelBatchRequest{ Name: fmt.Sprintf("projects/%s/regions/%s/batches/%s", projectID, region, batchID), } // 调用CancelBatch方法执行取消操作 _, err := client.CancelBatch(ctx, req) return err }
关键说明
CancelBatch是专门用于终止运行中作业的API,执行后作业状态会转为CANCELLED- 若作业已处于完成(成功/失败)状态,调用
CancelBatch会返回错误,此时可使用DeleteBatch清理作业资源 - 无需依赖gcloud CLI,完全通过Go客户端实现编程式取消,适配你的应用场景
内容的提问来源于stack exchange,提问作者David Gamboa
相关产品推荐
相关产品推荐

