Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Este documento descreve como criar e executar um job que não é programado até que jobs específicos sejam concluídos ou falhem. Para saber mais sobre os estados de job, consulte Visão geral da criação e execução de jobs.
Se você tiver uma carga de trabalho com requisitos de recursos variáveis, considere usar jobs dependentes para criar uma cadeia automatizada de jobs que usam VMs separadas.
Por exemplo, separe os tipos de VMs usadas para operações de baixa demanda (como preparação de dados) e operações com uso intensivo de computação (como processamento de dados).
Ao usar jobs dependentes para otimizar o consumo de recursos, é possível reduzir
custos e o uso de cotas.
Um job dependente pode ter até quatro dependências. Cada dependência precisa ter um nome de job exclusivo e um dos seguintes estados obrigatórios:
SUCCEEDED: concluído
FAILED: falha
FINISHED: concluído ou com falha
Ao criar um job dependente, todos os jobs de dependência precisam existir.
Um job dependente não pode entrar no estado programado (SCHEDULED) até que cada job de dependência tenha entrado no estado necessário. Se for impossível para um job de dependência entrar no estado necessário, o job dependente vai falhar imediatamente sem ser programado.
Assim como todos os jobs, um job dependente não pode entrar no estado programado (SCHEDULED)
se exceder o
tempo máximo de espera na fila.
O Batch aplica esse limite para evitar que seus jobs fiquem
desatualizados. Consequentemente, se você achar que o tempo restante necessário para a conclusão de qualquer um dos jobs de dependência pode exceder esse limite, faça uma ou mais das seguintes ações:
Se você ainda não criou um job de dependência, tente reduzir o tempo de execução esperado dele. Por exemplo, é possível aumentar o paralelismo
da carga de trabalho ou limitar o tempo de execução de qualquer
tarefa e executável que não precise ser concluído.
Aguarde para criar o job dependente até que o tempo de execução esperado dos jobs de dependência seja menor que o limite.
Criar um job dependente
É possível criar um job dependente usando os seguintes métodos:
Para especificar que um job é dependente, inclua o
campo dependencies[].items,
que aceita uma ou mais dependências especificadas como pares de chave-valor, no
corpo principal do arquivo JSON:
DEPENDENCY_JOB_NAME: o nome de um job de dependência,
que precisa atingir o estado necessário antes que o job dependente possa ser
programado.
REQUIRED_STATE: o estado necessário para o job de dependência correspondente, que precisa ser SUCCEEDED, FAILED ou FINISHED.
Por exemplo, um job dependente com três dependências pode ter um arquivo de configuração JSON semelhante a este:
{"taskGroups":[{"taskSpec":{"runnables":[{"script":{"text":"echo Hello World! This is task $BATCH_TASK_INDEX."}}]},"taskCount":3}],"dependencies":[{"items":{"DEPENDENCY_JOB_NAME_1":"REQUIRED_STATE_1","DEPENDENCY_JOB_NAME_2":"REQUIRED_STATE_2","DEPENDENCY_JOB_NAME_3":"REQUIRED_STATE_3"}}]}
A seguir
Se você tiver problemas para criar ou executar um job, consulte
Solução de problemas.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-02 UTC."],[[["\u003cp\u003eThis document explains how to create dependent jobs, which are jobs that begin only after specific prior jobs have either succeeded, failed, or finished.\u003c/p\u003e\n"],["\u003cp\u003eUsing dependent jobs helps optimize resource allocation by allowing different VM types to be used for different job phases, such as data preparation versus data processing.\u003c/p\u003e\n"],["\u003cp\u003eDependent jobs have restrictions, such as a maximum of four dependencies, and the required states for dependencies can be \u003ccode\u003eSUCCEEDED\u003c/code\u003e, \u003ccode\u003eFAILED\u003c/code\u003e, or \u003ccode\u003eFINISHED\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eWhen creating a dependent job, all dependency jobs must already exist, and the dependent job won't schedule until each dependency reaches its designated state.\u003c/p\u003e\n"],["\u003cp\u003eYou can create a dependent job using the Google Cloud CLI's \u003ccode\u003egcloud alpha batch jobs submit\u003c/code\u003e command or the Batch API's \u003ccode\u003ev1alpha jobs.create\u003c/code\u003e method, specifying dependencies in the \u003ccode\u003edependencies[].items\u003c/code\u003e field.\u003c/p\u003e\n"]]],[],null,["# Schedule dependent jobs\n\nThis document describes how to create and run a job that isn't scheduled\nuntil specific jobs have succeeded or failed. To learn more about job states,\nsee [Job creation and execution overview](/batch/docs/create-run-job).\n\nIf you have a workload with varying resource requirements, consider using\ndependent jobs to create an automated chain of jobs that each use separate VMs.\nFor example, separate the types of VMs used for low-demand operations\n(like data preparation) and compute-intensive operations (like data processing).\nBy using dependent jobs to help optimize resource consumption, you can reduce\ncosts and quota usage.\n\nBefore you begin\n----------------\n\n1. If you haven't used Batch before, review [Get started with Batch](/batch/docs/get-started) and enable Batch by completing the [prerequisites for projects and users](/batch/docs/get-started#prerequisites).\n2.\n\n To get the permissions that\n you need to create a job,\n\n ask your administrator to grant you the\n following IAM roles:\n\n - [Batch Job Editor](/iam/docs/roles-permissions/batch#batch.jobsEditor) (`roles/batch.jobsEditor`) on the project\n - [Service Account User](/iam/docs/roles-permissions/iam#iam.serviceAccountUser) (`roles/iam.serviceAccountUser`) on the [job's service account](/batch/docs/create-run-job-custom-service-account#create-job-service-account), which by default is the [default Compute Engine service account](/compute/docs/access/service-accounts#default_service_account)\n\n\n For more information about granting roles, see [Manage access to projects, folders, and organizations](/iam/docs/granting-changing-revoking-access).\n\n\n You might also be able to get\n the required permissions through [custom\n roles](/iam/docs/creating-custom-roles) or other [predefined\n roles](/iam/docs/roles-overview#predefined).\n\n\u003cbr /\u003e\n\n### Restrictions\n\nDependent jobs have the following restrictions:\n\n- A dependent job can have up to four dependencies. Each dependency must contain\n a unique job name and one of the following required states:\n\n - `SUCCEEDED`: succeeded\n - `FAILED`: failed\n - `FINISHED`: succeeded or failed\n- When you create a dependent job, all of its dependency jobs must exist.\n\n- A dependent job can't enter the scheduled (`SCHEDULED`) state until each\n dependency job has entered its required state. If it becomes impossible for a\n dependency job to enter its required state, then the dependent job immediately\n fails without being scheduled.\n\n | **Note:** You don't need to wait to delete finished dependency jobs. A dependent job automatically remembers if a deleted dependency job reached its required state.\n- Like all jobs, a dependent job can't enter the scheduled (`SCHEDULED`) state\n if the job exceeds the\n [maximum wait time in the queue](/batch/quotas#max-job-queue).\n Batch enforces this limit to prevent your jobs from becoming\n stale. Consequently, if you expect the remaining time required for any of the\n dependency jobs to finish might exceed this limit, then consider doing one\n or more of the following:\n\n - If you haven't created a dependency job yet, try to reduce the expected run time of the dependency job. For example, you might increase the parallelism of the workload or [limit the run time](/batch/docs/set-timeouts) of any tasks and runnables that you don't need to succeed.\n - Wait to create the dependent job until the expected run time of the dependency jobs is lower than the limit.\n\n### Create a dependent job\n\nYou can [create a job](/batch/docs/create-run-basic-job#create-basic-job) that\nis dependent using the following methods:\n\n- For the Google Cloud CLI, use the [`gcloud alpha batch jobs submit` command](/sdk/gcloud/reference/alpha/batch/jobs/submit).\n- For the Batch API, use the [v1alpha `jobs.create` method](/batch/docs/reference/rest/v1alpha/projects.locations.jobs/create).\n\nTo specify that a job is dependent, include the\n[`dependencies[].items` field](/batch/docs/reference/rest/v1alpha/projects.locations.jobs#Job.FIELDS.dependencies),\nwhich supports one or more dependencies specified as key-value pairs, in the\nmain body in the JSON file: \n\n \"dependencies\": [\n {\n \"items\": {\n \"\u003cvar translate=\"no\"\u003eDEPENDENCY_JOB_NAME\u003c/var\u003e\": \"\u003cvar translate=\"no\"\u003eREQUIRED_STATE\u003c/var\u003e\"\n }\n }\n ]\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eDEPENDENCY_JOB_NAME\u003c/var\u003e: the name of a dependency job,\n which must reach its required state before this dependent job is allowed to\n be scheduled.\n\n- \u003cvar translate=\"no\"\u003eREQUIRED_STATE\u003c/var\u003e: the required state for the\n corresponding dependency job, which must be `SUCCEEDED`, `FAILED`, or\n `FINISHED`.\n\nFor example, a dependent job with three dependencies can have a JSON\nconfiguration file that is similar to the following: \n\n {\n \"taskGroups\": [\n {\n \"taskSpec\": {\n \"runnables\": [\n {\n \"script\": {\n \"text\": \"echo Hello World! This is task $BATCH_TASK_INDEX.\"\n }\n }\n ]\n },\n \"taskCount\": 3\n }\n ],\n \"dependencies\": [\n {\n \"items\": {\n \"\u003cvar translate=\"no\"\u003eDEPENDENCY_JOB_NAME_1\u003c/var\u003e\": \"\u003cvar translate=\"no\"\u003eREQUIRED_STATE_1\u003c/var\u003e\",\n \"\u003cvar translate=\"no\"\u003eDEPENDENCY_JOB_NAME_2\u003c/var\u003e\": \"\u003cvar translate=\"no\"\u003eREQUIRED_STATE_2\u003c/var\u003e\",\n \"\u003cvar translate=\"no\"\u003eDEPENDENCY_JOB_NAME_3\u003c/var\u003e\": \"\u003cvar translate=\"no\"\u003eREQUIRED_STATE_3\u003c/var\u003e\"\n }\n }\n ]\n }\n\nWhat's next\n-----------\n\n- If you have issues creating or running a job, see [Troubleshooting](/batch/docs/troubleshooting).\n- Learn how to [view jobs and tasks](/batch/docs/view-jobs-tasks).\n- Learn about more [job creation options](/batch/docs/create-run-job#job-creation-options)."]]