使用golang,我有几个dataproc批处理作业正在运行,我可以通过它们的Uuid来访问它们,方法是创建一个像这样的客户端。
BatchClient, err := dataproc.NewBatchControllerClient(context, ...options)
如果我想删除一个批处理作业,我可以像这样使用GoogleCloud的Golang客户端库(请求体包含批处理的UUID)
_, err := batchClient.DeleteBatch(context, request, ...options)
但是,似乎没有任何方法可以取消已经以编程方式运行的批处理。如果我试图删除一个已经在运行的批处理,我理所当然地得到一个错误FAILED_PRECONDITION
现在,我知道Google cloud的SDK cli有一个简单的方法来取消这样的作业:
gcloud dataproc batches cancel (BATCH : --region=REGION) [GCLOUD_WIDE_FLAG …]
不幸的是,这种方法不太适合我的应用程序。
1条答案
按热度按时间iklwldmw1#
在删除批处理资源之前,您需要确保它处于终端状态(失败或成功)。
为了实现这一点,您需要通过相关的长时间运行操作来取消它:https://cloud.google.com/dataproc-serverless/docs/reference/rest/v1/projects.locations.operations/cancel