Configure as propriedades de agendamento de tarefas (nós) no DataWorks, incluindo cronograma, dependências, políticas de execução e parâmetros, para garantir a execução automática e confiável das tarefas.
Conceitos fundamentais
Antes de configurar as propriedades de agendamento, compreenda os seguintes conceitos fundamentais:
Tarefas e instâncias: Uma tarefa (ou nó) é o código de lógica de negócios desenvolvido no DataWorks. Quando uma tarefa é executada com base nas suas Scheduling Settings, o sistema gera uma ou mais instâncias em execução. No Operation and Maintenance Center, você gerencia e monitora essas instâncias, visualize logs e reexecuta instâncias.
Instâncias periódicas: Para tarefas com agendamento periódico, o sistema gera a Scheduling Frequency correspondente (como diária ou horária) e produz as periodic instances respectivas. Por exemplo, uma tarefa horária gera 24 instâncias pendentes por dia.
Data de negócios: Refere-se ao horário de processamento de dados da instância, geralmente T-1 (ontem). Por exemplo, uma instância executada na madrugada de 02/01/2023 tem 01/01/2023 como data de negócios, ou seja, processa dados de 1º de janeiro. A substituição de parâmetros de agendamento geralmente se baseia nessa data.
Pré-requisitos
Crie um nó. O DataWorks utiliza nós para o desenvolvimento de tarefas. Diferentes tarefas de motor são encapsuladas como diferentes tipos de nó. Selecione o nó apropriado para suas necessidades. Para obter detalhes, consulte Node Development Overview.
Ative a opção Enable Periodic Scheduling na página Scheduling Settings. Após a ativação, todas as tarefas no workspace podem ser executadas automaticamente conforme suas configurações. Para obter detalhes, consulte Configure workspace scheduling properties.
Configurar propriedades de agendamento
No painel Scheduling Settings, à direita do editor de nós, defina as propriedades que estabelecem o comportamento automatizado da tarefa.
1. Acessar a página de configuração de agendamento
Acesse a página Workspaces no console do DataWorks. Na barra de navegação superior, selecione a região desejada. Localize o workspace e escolha na coluna Actions.
No Data Studio, clique em duas vezes no nó de destino para abrir a página de edição.
Clique em Scheduling Settings à direita do editor de nós para abrir o painel de configuração.
2. Definir as propriedades de agendamento
O painel de configuração de agendamento inclui as abas Scheduling time, Scheduling Dependency, Scheduling Policy, Scheduling Parameters, Node output parameters e Associated Role. Configure-as conforme necessário.
Horário de agendamento: Definir quando uma tarefa é executada
Defina quando e com que frequência a tarefa será executada automaticamente.
Para nós dentro de um workflow, o Scheduling time é configurado uniformemente pelo workflow e não pode ser modificado neste local. Para nós independentes, faça a configuração aqui.
Parâmetro | Descrição |
Scheduling Frequency | Define a frequência de execução automática da tarefa em produção. Suporta períodos de minutos, horas, dias, semanas, meses e anos.
|
Effective Date | Defina as datas de início e fim do agendamento automático. Após o período de validade, a tarefa deixa de gerar novas instâncias periódicas. |
Cron expression | Expressão gerada automaticamente com base nas propriedades de tempo configuradas na interface. Não requer configuração manual. |
Horário de agendamento versus horário real de execução: O Scheduling time configurado aqui é o horário de início esperado da tarefa. O horário real também depende da upstream task completion, resource group availability e de outros fatores.
Execução simulada em dias não agendados: Para tarefas semanais, mensais ou anuais, nos dias sem agendamento previsto, o sistema gera uma instância de dry run. Essa instância é concluída com sucesso imediatamente e aciona tarefas downstream, mas não executa código nem consome recursos de computação.
Independência da frequência de agendamento: A frequência de agendamento de uma tarefa é determinada exclusivamente pela sua própria Scheduling Frequency, independentemente das tarefas upstream. O DataWorks suporta dependências entre tarefas com diferentes períodos de agendamento (por exemplo, uma tarefa horária dependendo de uma tarefa diária).
Dependências de agendamento: Definir pré-requisitos para execução da tarefa
Especifique quais tarefas upstream devem ser concluídas com sucesso antes do início da tarefa atual. Configurar corretamente as dependências é essencial para garantir a ordem de processamento de dados e a precisão dos resultados.
O DataWorks analisa e recomenda automaticamente as dependências upstream com base na linhagem de tabelas no código para assegurar a integridade dos dados. Você também pode adicionar ou modifique dependências manualmente conforme necessário.
Configurar dependências upstream
Na aba Scheduling Dependency, visualize a lista de nós de dependência upstream que o sistema analisou a partir do código.
-
Selecione o modo de dependência para cada nó upstream:
Dependência do mesmo ciclo: A instância downstream de hoje (T) depende da instância upstream de hoje (T). Esta é a dependência mais comum. Por exemplo, se a Tarefa B diária lê uma tabela produzida pela Tarefa A diária, a Tarefa B deve depender do mesmo ciclo da Tarefa A.
Dependência do ciclo anterior: A instância downstream de hoje (T) depende da instância upstream de ontem (T-1). Por exemplo, a tarefa de hoje precisa ler os dados agregados de ontem. Para obter detalhes, consulte Cross-cycle dependencies.
(Opcional) Se o sistema não analisou automaticamente as dependências ou se você precisar depender de um nó que não produz dados (como Zero load node), clique em Add upstream node para configurar manualmente.
Dependências de workflow: As dependências de nós dentro de um workflow são gerenciadas uniformemente pelo próprio workflow. Esta seção aborda apenas a configuração de dependências de nós independentes. Para configuração de agendamento de workflows, consulte Configure workflow scheduling properties.
Cenários de dependência complexos: O DataWorks suporta vários cenários de dependência complexos. Antes de configurar, revise a documentação sobre complex dependency configuration para entender as regras predefinidas.
Cenários de dependência não suportados: Para dados não produzidos pelo agendamento periódico do DataWorks (como tabelas sincronizadas em tempo real, tabelas carregadas manualmente ou tabelas de dimensão), o sistema não detecta o status de atualização dos dados. Portanto, não é possível configurar dependências de agendamento. Nesses casos, utilize o nó raiz do workspace ou um Zero load node para orquestração unificada.
Política de agendamento: Definir comportamento de execução e recursos da tarefa
Determine como as instâncias são geradas, o comportamento de execução (como timeout e reexecução) e os recursos necessários.
Parâmetro | Descrição |
Instance generation method | Define quando as instâncias periódicas começam a ser geradas após a implantação da tarefa.
|
Scheduling Type |
|
Timeout Definition | Defina a duração máxima para a execução da tarefa. Após esse tempo, o sistema encerra a tarefa automaticamente e a marca como falha. O padrão é de 3 a 7 dias, com configuração manual máxima de 168 horas (7 dias). |
RUN Attribute | Especifique sob quais condições a tarefa pode ser reexecutada manualmente.
|
Auto Rerun upon Failure | Quando ativado, se uma tarefa falhar devido a problemas transitórios (como flutuações de rede), o sistema tenta novamente de forma automática para melhorar a estabilidade do agendamento.
Nota Tarefas que falham devido a timeout não acionam reexecuções automáticas. |
Max Parallel Instances | Limita o número máximo de instâncias simultâneas da mesma tarefa para controle de concorrência. O intervalo de valores é de 1 a 10000. Quando ativado, as instâncias excedentes entram em fila até que as existentes sejam concluídas. |
Resource Group | Configure o grupo de recursos de agendamento para a tarefa. |
Compute Resource/Compute quota | Configure os recursos do motor de computação (como MaxCompute Quota) para a tarefa. |
Datasets | Monte um dataset (como Object Storage Service (OSS) ou Apsara File Storage (NAS)) em tipos específicos de nó (como Shell) para acesso como arquivos locais no código. É possível configurar o Mount Path, as Advanced Settings (como read method) e as permissões Read Only. |
Configuração de parâmetros: Permitir passagem dinâmica de valores entre tarefas
A parametrização torna o código da tarefa mais flexível, permitindo a passagem dinâmica de valores e a transferência de contexto entre tarefas.
Parâmetros de agendamento (parâmetros de entrada)
Se houver variáveis no código do nó (como ${pt_time}), atribua valores aqui. Os valores podem ser constantes fixas ou expressões dinâmicas usando parâmetros integrados do DataWorks (como $bizdate).
Use Add parameters para definir manualmente ou Loading parameters in code para identificação automática. Além disso, use o ícone
para vincular valores de parâmetros aos parâmetros de saída de nós upstream.
O valor final dos parâmetros de agendamento é determinado pela data de negócios da instância e pelas expressões de scheduling parameter configuradas.
Melhor prática: Após implantar uma tarefa, verifique a configuração dos parâmetros de agendamento na página Operation and Maintenance Center > Auto Triggered Task em produção para garantir que a configuração atenda às expectativas.
Parâmetros de saída do nó (parâmetros de saída)
Defina a saída do nó atual como pares chave-valor para referência pelos nós downstream. Eles podem consumir esses valores através da configuração de Scheduling Parameters via Associate Output Parameter of Ancestor Node.
O Parameter Value pode ser Constant (strings fixas) ou Variable (referenciando parâmetros de entrada do sistema ou personalizados).
Tipos de nó suportados:
EMR Hive,EMR Spark SQL,ODPS Script,Hologres SQL,AnalyticDB for PostgreSQLeMySQL.Passar resultados de consulta: Os Node output parameters aceitam apenas valores de string. Para passar conjuntos de resultados de consultas SQL upstream para downstream, use o Assignment node.
Função associada: Acessar outros recursos cloud com segurança
Especifique uma função RAM para que a tarefa obtenha dinamicamente credenciais de acesso temporárias via Alibaba Cloud STS (Security Token Service) durante a execução. Isso permite acessar outros recursos cloud (como OSS) sem codificar pares AccessKey, aumentando a segurança.
Limites
Restrição de grupo de recursos: Apenas nós executados em grupos de recursos serverless são suportados.
Restrição de tipo de nó: Apenas nós Python, Shell, Notebook, PyODPS 2, PyODPS 3 e PAI DLC são suportados.
1. Configurar a função associada para um nó
À direita do editor de nós, localize e clique em Run Configuration.
No painel de configuração de agendamento, alterne para a aba Associated Role.
-
Na lista suspensa RAM Role, selecione a função RAM preparada.
ImportanteSe a lista suspensa estiver vazia ou se você não encontrar a função desejada, consulte Configure an associated role by using STS para concluir a configuração da função RAM.
Após concluir a configuração, envie o nó. Esta configuração entra em vigor apenas para execuções de depuração.
2. Executar e verificar
PyODPS: Ao acessar outros produtos cloud (como OSS), o sistema usa a identidade da função RAM configurada. No entanto, ao acessar dados do MaxCompute, ele ainda usa automaticamente a identidade de acesso configurada para recursos de computação (nível de projeto).
Configurar propriedades de agendamento
Após depurar o nó, sincronize a Run Configuration da Associated Role para as Scheduling Settings em . Após a implantação, a tarefa será executada com a identidade da função especificada.
Se você configurou uma imagem personalizada na Run Configuration , também deverá sincronizar as configurações para a configuração de agendamento.
Visualizar a função de execução no Operation Center
Após a conclusão da tarefa, no Operation and Maintenance Center, visualize os detalhes da instância para confirme se a função especificada foi usada com sucesso.
Acesse .
Localize a instância do nó executada e clique em para abrir a página de detalhes.
Na página de detalhes, verifique o campo Execution Identity para confirme se a tarefa utilizou com sucesso a função RAM especificada.
3. (Opcional) Visualizar ou usar credenciais temporárias no código
Após configurar uma função associada, a tarefa usa automaticamente a identidade da função RAM para acessar outros recursos cloud durante a execução. Na maioria dos casos, você pode executar a tarefa sem obter explicitamente credenciais no código.
Se precisar usar explicitamente credenciais temporárias no código ou quiser visualizar as credenciais injetadas pelo sistema, obtenha-as usando os métodos a seguir. O DataWorks obtém automaticamente credenciais temporárias em tempo de execução e as injeta no ambiente como variáveis de ambiente.
Os nós PAI DLC não suportam a obtenção de credenciais temporárias das maneiras descritas nesta seção.
Método 1: Ler variáveis de ambiente (recomendado para Shell e Python)
O sistema define automaticamente as três variáveis de ambiente a seguir, que podem ser lidas diretamente no código.
LINKED_ROLE_ACCESS_KEY_ID: O AccessKey ID temporário.LINKED_ROLE_ACCESS_KEY_SECRET: O AccessKey secret temporário.LINKED_ROLE_SECURITY_TOKEN: O token de segurança temporário.
Exemplo de código (Python):
Este exemplo requer uma imagem Python personalizada com oss2 instalado. Para obter detalhes, consulte Custom image.
import os
import oss2
# 1. Obtain temporary credentials from environment variables
access_key_id = os.environ.get('LINKED_ROLE_ACCESS_KEY_ID')
access_key_secret = os.environ.get('LINKED_ROLE_ACCESS_KEY_SECRET')
security_token = os.environ.get('LINKED_ROLE_SECURITY_TOKEN')
# Verify credentials obtained
if not all([access_key_id, access_key_secret, security_token]):
raise Exception("Failed to get linked role credentials from environment variables.")
# 2. Initialize the OSS client with temporary credentials
# Assume the role has been granted access to 'your-bucket-name'
auth = oss2.StsAuth(access_key_id, access_key_secret, security_token)
bucket = oss2.Bucket(auth, 'http://oss-<regionID>-internal.aliyuncs.com', 'your-bucket-name')
# 3. Access OSS resources using the client
try:
# List objects in the bucket
for obj in oss2.ObjectIterator(bucket):
print('object name: ' + obj.key)
print("Successfully accessed OSS with linked role.")
except oss2.exceptions.OssError as e:
print(f"Error accessing OSS: {e}")
Exemplo de código (Shell):
#!/bin/bash
access_key_id=${LINKED_ROLE_ACCESS_KEY_ID}
access_key_secret=${LINKED_ROLE_ACCESS_KEY_SECRET}
security_token=${LINKED_ROLE_SECURITY_TOKEN}
# Access OSS. Replace regionID, bucket_name, and file_name with actual values
echo "ID:"$access_key_id
echo "token:"$security_token
ls -al /home/admin/usertools/tools/
# Example: Download a file from OSS to local test_dw.py using ossutil and print its content.
/home/admin/usertools/tools/ossutil64 cp --access-key-id $access_key_id --access-key-secret $access_key_secret --sts-token $security_token --endpoint http://oss-<regionID>-internal.aliyuncs.com oss://<bucket_name>/<file_name> test_dw.py
echo "************************ Success ************************, printing"
cat test_dw.py
Método 2: Usar Credentials Client (recomendado para Python)
Exemplo de código (Python):
Este exemplo requer uma imagem Python personalizada com oss2 e alibabacloud_credentials instalados. Para obter detalhes, consulte Custom image.
from alibabacloud_credentials.client import Client as CredentialClient
import oss2
# 1. Use the SDK to automatically obtain credentials
# It automatically reads LINKED_ROLE_* credential info from environment variables
cred_client = CredentialClient()
credential = cred_client.get_credential()
access_key_id = credential.get_access_key_id()
access_key_secret = credential.get_access_key_secret()
security_token = credential.get_security_token()
if not all([access_key_id, access_key_secret, security_token]):
raise Exception("Failed to get linked role credentials via SDK.")
# 2. Initialize the OSS client with credentials
auth = oss2.StsAuth(access_key_id, access_key_secret, security_token)
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', 'your-bucket-name')
# 3. Access OSS
print("Listing objects in bucket...")
for obj in oss2.ObjectIterator(bucket):
print(' - ' + obj.key)
print("Successfully accessed OSS with linked role via SDK.")
Próximos passos: Enviar e implantar
As configurações de agendamento não entram em vigor imediatamente após serem definidas no ambiente de desenvolvimento. Envie e implante o nó no ambiente de produção para que o sistema de agendamento gere instâncias periódicas e execute automaticamente as tarefas com base na configuração mais recente.
Documentação relacionada
Parâmetros de agendamento: Scheduling parameter format reference
Horário de agendamento: Scheduling time reference
-
Dependências de agendamento:
Parâmetros de saída do nó: Node output parameter reference