Todos os produtos
Search
Central de documentação

MaxCompute:Prioridade de jobs

Última atualização: Aug 21, 2026

Quando vários jobs competem pelos mesmos recursos de computação, o MaxCompute usa a prioridade para definir quais recebem recursos primeiro. Jobs com prioridade mais alta obtêm recursos antes dos de menor prioridade e podem preemptar recursos de jobs em execução. Use a prioridade de jobs para proteger pipelines críticos — por exemplo, um job ETL que deve terminar antes das 06:00 — quando o cluster estiver ocupado com cargas de trabalho menos urgentes.

Como funciona

Cada job do MaxCompute tem um valor de prioridade de 0 a 9. Números menores indicam maior prioridade: 0 é a mais alta e 9 é a mais baixa.

Com recursos de computação limitados, o MaxCompute agenda os jobs por ordem de prioridade. Se um job de alta prioridade chegar enquanto os recursos estiverem totalmente ocupados por jobs de baixa prioridade, ele preemptará esses jobs para obter os recursos necessários.

Comportamento padrão com o recurso de prioridade desativado:

  • Todos os jobs: prioridade 9 (mais baixa)

  • Jobs de algoritmo PAI: prioridade 1 (quase a mais alta)

Uma prioridade NULL nos resultados da consulta geralmente indica uma tarefa DDL; ignore-a.

Pré-requisitos

Antes de ativar a prioridade de jobs, verifique se você tem:

  • Função de proprietário do projeto ou Super_Administrator no projeto MaxCompute

  • (Para ativação no nível de cota) Modelo de cota e plano de cota configurados. Consulte Configure quotas

Ativar a prioridade de jobs

Importante

Antes de ativar a prioridade de jobs, audite as prioridades existentes pelo Information Schema e redefina quaisquer valores diferentes de 9 para 9. Ignorar esta etapa pode fazer com que jobs com configurações de alta prioridade furem a fila inesperadamente.

Verificar prioridades de jobs existentes

Execute a seguinte consulta no Information Schema para visualizar a distribuição de prioridades em todos os jobs de uma partição de data:

SELECT  get_json_object(
            REPLACE(settings, '.', '_'),
            '$.odps_instance_priority'
        ) AS priority,
        task_type,
        COUNT(1) AS cnt
FROM    information_schema.tasks_history
WHERE   ds = '${bizdate}'  -- Replace with the date partition, for example 20200517.
GROUP BY get_json_object(
             REPLACE(settings, '.', '_'),
             '$.odps_instance_priority'
         ),
         task_type
ORDER BY cnt DESC
LIMIT   100;

Exemplo de saída:

+----------+-----------+-----+
| priority | task_type | cnt |
+----------+-----------+-----+
| 9        | SQL       | 4   |
| NULL     | SQL       | 1   |
| 2        | SQL       | 1   |
+----------+-----------+-----+

Jobs com prioridade NULL são tarefas DDL; ignore-os. Para jobs com valores de prioridade diferentes de 9 (como 2 neste exemplo), identifique os proprietários e redefina as prioridades antes de ativar o recurso.

Para encontrar detalhes de jobs com um valor de prioridade específico:

SELECT  inst_id,
        owner_name,
        task_name,
        task_type,
        settings
FROM    information_schema.tasks_history
WHERE   ds = '${bizdate}'  -- Replace with the date partition, for example 20200517.
AND     get_json_object(
            REPLACE(settings, '.', '_'),
            '$.odps_instance_priority'
        ) = '${priority}'  -- Replace with the priority value to filter, for example 2.
LIMIT   100;

Campos principais na saída:

Campo

Descrição

SKYNET_ID

ID do nó de agendamento do DataWorks. Ausente se o job não foi enviado pelo DataWorks.

SKYNET_ONDUTY

Presente se o job for periódico.

owner_name

Proprietário do job. Use este campo para rastrear jobs fora do DataWorks.

Após identificar jobs com prioridades diferentes de 9:

  • Jobs do DataWorks: Verifique se a linha de base associada é adequada. Caso contrário, exclua-a. Consulte Baseline management.

  • Jobs fora do DataWorks: Entre em contato com o proprietário usando owner_name e user_agent. Remova a configuração de prioridade do código do job para restaurar a prioridade padrão 9.

Ativar a prioridade no nível do projeto

Somente o proprietário do projeto ou um usuário com a função Super_Administrator pode ativar a prioridade. Execute o seguinte comando no cliente MaxCompute:

setproject odps.instance.priority.enable=true;

A prioridade entra em vigor imediatamente para todos os jobs no projeto.

Ativar a prioridade no nível da cota

Ativar a prioridade no nível da cota aplica o agendamento por prioridade a todos os jobs executados sob essa cota.

  1. Faça login no console do MaxCompute e selecione uma região.console do MaxCompute

  2. No painel de navegação, escolha Manage Configurations > Quotas.

  3. Localize a cota desejada e clique em Quota Configuration na coluna Actions.

  4. Na aba Basic Configurations, clique em Edit Basic Configurations.

  5. Selecione a opção Enable Priority para a cota de nível 2 desejada.

    Se o Type da cota de nível 2 for Interactive , a opção Enable Priority estará indisponível por padrão.
  6. Clique em OK.

Definir a prioridade de jobs

Escolha o método adequado ao seu fluxo de trabalho:

Método

Mais indicado para

Cliente MaxCompute (comando SET)

Consultas ad hoc

Cliente MaxCompute (flag CLI)

Consultas ad hoc via script

Java SDK

Aplicações com lógica de prioridade personalizada

Gerenciamento de linha de base do DataWorks

Pipelines periódicos com requisitos de SLA

Configurações de nó do DataWorks

Consultas ad hoc no DataWorks

Método 1: Cliente MaxCompute — comando SET

Execute este comando antes da instrução SQL no cliente MaxCompute:

SET odps.instance.priority = <value>;
-- <value> is an integer from 0 (highest priority) to 9 (lowest priority).

Método 2: Cliente MaxCompute — flag CLI

Passe a prioridade como flag ao enviar uma instrução SQL:

bin/odpscmd --config=<config-file> --project=<project-name> --instance-priority=<value> -e "<sql>"

Método 3: Java SDK

Use o método odps.instances().create(task, priority) para definir a prioridade ao enviar um job:

import com.aliyun.odps.Instance;
import com.aliyun.odps.LogView;
import com.aliyun.odps.Odps;
import com.aliyun.odps.OdpsException;
import com.aliyun.odps.account.Account;
import com.aliyun.odps.account.AliyunAccount;
import com.aliyun.odps.task.SQLTask;

public class OdpsPriorityDemo {
    public static void main(String[] args) throws OdpsException {
        // Load credentials from environment variables.
        // Never hardcode AccessKey credentials in your code.
        Account account = new AliyunAccount(
            System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
        );

        Odps odps = new Odps(account);
        odps.setEndpoint("http://service.odps.aliyun.com/api");
        odps.setDefaultProject("<your-project-name>");

        SQLTask task = new SQLTask();
        task.setName("adhoc_sql_task_1");
        task.setQuery("select count(*) from aa;");

        // Submit the job with priority 5.
        // Priority values: 0 (highest) to 9 (lowest).
        Instance instance = odps.instances().create(task, 5);

        // Print the LogView URL to monitor job status (optional).
        LogView logView = new LogView(odps);
        System.out.println(logView.generateLogView(instance, 24));

        // Wait for the job to finish (optional).
        instance.waitForSuccess();
    }
}

Para mais detalhes, consulte Java SDK overview.

Método 4: Gerenciamento de linha de base do DataWorks

Use este método quando precisar concluir um pipeline periódico e todos os seus jobs upstream dentro de uma janela de SLA. O gerenciamento de linha de base define prioridades para todos os jobs de um pipeline simultaneamente, sem necessidade de configurar cada job individualmente.

Prioridades de linha de base do DataWorks e equivalentes no MaxCompute:

Prioridade de linha de base do DataWorks

Prioridade de job do MaxCompute

Observações

8 (mais alta no DataWorks)

1

Maior prioridade prática

7

2

5

4

3

6

1 (padrão)

8

Padrão para fluxos de trabalho do DataWorks

Sem linha de base (ad hoc)

9

Padrão para consultas ad hoc do DataWorks

Fórmula de conversão: Prioridade do MaxCompute = 9 − Prioridade da linha de base do DataWorks

Para mais detalhes, consulte Baseline management.

Consultas ad hoc do DataWorks não possuem linha de base por padrão; portanto, os jobs do MaxCompute enviados usam a prioridade mais baixa (9). Fluxos de trabalho do DataWorks têm prioridade de linha de base padrão 1, logo, seus jobs usam a prioridade 8.

Método 5: Configurações de nó do DataWorks

Defina a prioridade diretamente em um nó do DataWorks para consultas ad hoc:

set odps.instance.priority = <value>;
-- <value> is the priority value from 0 (highest) to 9 (lowest).

Visualizar a prioridade de jobs

Para verificar a prioridade de um job específico, abra-o no Logview 2.0, acesse a aba Resumo JSON e localize o parâmetro odps.instance.priority.

Logview 2.0

A prioridade exibida em XML na página do Logview não é precisa. Em projetos com prioridade desativada, o sistema converte qualquer valor diferente de 9 para 9 no XML, evitando saltos de fila não intencionais. Sempre use a aba Resumo JSON para obter informações precisas sobre a prioridade.

Próximos passos