Uma dependência do mesmo ciclo exige que um nó aguarde a conclusão da instância do seu nó upstream no ciclo atual antes da execução. Esse recurso é ideal quando um nó consome dados produzidos por um nó upstream no mesmo dia. O DataWorks oferece diversas formas de configurar e visualizar essas dependências para que você verifique se as tarefas foram agendadas conforme o esperado.
Como funciona
As dependências de agendamento são estabelecidas ao associar uma saída de nó a uma entrada de nó: o nome da saída do nó upstream é adicionado como entrada do nó downstream, garantindo que este último seja executado somente após o sucesso do nó upstream. Antes de começar, identifique os alvos e os tipos de dependência com base na linhagem das suas tabelas. Para mais informações, consulte Scheduling dependency configuration guide.
Saída de nó
A saída de nó, também conhecida como nome da saída do nó atual, é um identificador lógico referenciado por outros nós para estabelecer uma dependência. Ela não representa os dados reais produzidos pelo nó.
O DataWorks gera automaticamente dois nomes de saída para cada nó:
projectName.randomNumber_out: Esta saída é globalmente única e não pode ser modificada ou excluída.
projectName.nodeName: Esta saída inclui o nome do nó e pode ser modificada. O nome dessa saída permanece inalterado mesmo se o nó for renomeado.
Você também pode adicionar saídas manualmente ou permitir que o DataWorks analise automaticamente as entradas e saídas do seu código. O suporte à análise automática varia conforme o tipo de nó. Para obter detalhes, consulte Comparison of automatic parsing results.
Entrada de nó
A entrada de nó especifica os nós ancestrais dos quais o nó atual depende. Defina uma dependência utilizando o nome da saída do ancestral (recomendado), o nome do nó ou o ID do nó.
Um ID de nó é gerado somente após o envio do nó ancestral para o ambiente de produção.
Diretrizes de configuração
Recomendamos o uso de automatic parsing para configurar dependências de forma eficiente. Ao utilizar a análise automática, siga estas diretrizes:
Criação de nós: Nomeie cada nó com o mesmo nome da sua tabela de saída.
Desenvolvimento de código: Evite que múltiplos nós gravem dados na mesma tabela.
Configuração de dependências: Defina a tabela produzida por um nó como a saída desse mesmo nó.
Pontos de entrada e métodos
Acesse a página de edição do nó no Data Studio, clique em Schedule Settings no painel de navegação à direita e configure as dependências de agendamento do nó na seção Scheduling Dependency.
Parent Nodes: Especifica os nós ancestrais dos quais a tarefa atual depende.
Output Name of Current Node: Define os nomes de saída pelos quais outras tarefas podem estabelecer dependências neste nó.
Durante a edição do código, as dependências são configuradas com base na linhagem da tabela por padrão. O DataWorks verifica automaticamente se as dependências correspondem à linhagem de dados no momento do envio. Escolha se deseja ativar o recurso de análise automática antes do envio. Para mais informações, consulte Configure automatic parsing before submission.
Caso o nó atual precise depender de dados produzidos por um nó upstream ontem, ou se uma tarefa horária/minuto precisar depender de sua própria instância do ciclo anterior, configure cross-cycle dependencies.
Se o nó atual e seu nó upstream possuírem frequências de agendamento diferentes, como uma tarefa diária dependendo de uma tarefa horária ou de tarefas horárias com frequências distintas, consulte Configure dependencies between tasks with different scheduling frequencies.
Existem três maneiras de configurar dependências. Todos os métodos utilizam o mesmo mecanismo subjacente.
Configurar dependências de nó analisando a linhagem da tabela a partir do código
A análise automática examina a linhagem da tabela no código de um nó e configura os nomes de saída e as dependências upstream do nó de acordo com essa análise. As tabelas nas quais o nó grava dados são adicionadas como saídas de nó no formato projectname.tablename, e as tabelas das quais o nó lê dados são adicionadas como entradas de nó.
Por exemplo, quando um nó utiliza SELECT em uma tabela, essa tabela é automaticamente analisada como uma dependência upstream do nó. Quando um nó utiliza INSERT em uma tabela, essa tabela é automaticamente analisada como uma saída do nó. Para consultar as palavras-chave suportadas pela análise automática para cada tipo de nó, veja Keywords supported by automatic parsing for each node type .
-
Configurar dependências
A análise automática suporta dois métodos: Parse Inputs and Outputs from Code e Automatic Parsing Before Committing. Ambos funcionam com o mesmo princípio. A análise automática antes do envio processa as entradas e saídas automaticamente quando você envia o código e solicita a configuração das dependências.
Por exemplo, o nó ODPS mc2 depende da tabela de saída
dws_user_info_all_dido nó mc1. O código do nó mc2 é o seguinte:INSERT OVERWRITE TABLE ads_user_info_1d PARTITION (dt='${workflow.var}') SELECT uid , MAX(region) , MAX(device) , COUNT(0) AS pv , MAX(gender) , MAX(age_range) , MAX(zodiac) FROM dws_user_info_all_di WHERE dt = '${workflow.var}' GROUP BY uid;Após clicar em Parse Inputs and Outputs from Code, a entrada deste nó é analisada como a tabela
dws_user_info_all_di, e o nome da tabela de saída e o nome do nó upstream são associados automaticamente:Nome da saída do nó upstream
Nome da tabela de saída do nó upstream
Nome do nó upstream
ID do Nó
Workspace
Proprietário
Agendamento
Método
Status da execução recente
Ação
yunwan_lingyi.dws_user_info_all_di
yunwan_lingyi.dws_user_info_all_di
mc1
-
Test workspace
lingyi01_testcloud_com
Day
Code parsing
No data
Delete
Simultaneamente, a saída deste nó é analisada como a tabela
ads_user_info_1d. Os resultados da análise são os seguintes:Nome da saída
Nome da tabela de saída
Nome do nó downstream
Proprietário
Método
Linhas de base afetadas do nó downstream
Ação
old_ide.505487297_out
-
-
-
Added by system
-
Delete
old_ide.mc2
-
-
-
Manually added
-
Delete
yunwan_lingyi.ads_user_info_1d
yunwan_lingyi.ads_user_info_1d
-
-
Code parsing
-
Delete
O nó mc2 agora está configurado com uma dependência do nó mc1.
-
Modificar dependências da análise de código
Se as dependências analisadas não corresponderem às suas expectativas, ou se unsupported scenarios (tables whose data is not produced by periodic scheduling) exigirem ajustes manuais, modifique as dependências analisadas conforme descrito abaixo.
Ação
Descrição
Excluir manualmente os resultados da análise
Exclua a entrada inesperada da lista de dependências do nó upstream, realize a operação de exclusão e analise novamente. Após a exclusão, um comentário correspondente é adicionado automaticamente ao código para evitar que a dependência seja readicionada durante a próxima análise:
--@exclude_input=Remove input --@exclude_output=Remove outputAdicionar manualmente entradas e saídas
Clique com o botão direito do mouse em um nome de tabela no editor de código e selecione Add Input ou Add Output. Após adicionar a entrada ou saída, um comentário correspondente é incluído automaticamente no código.
--@extra_output=Add output --@extra_input=Add inputAlternativamente, adicione dependências usando os métodos descritos em Manually add upstream node dependencies from the schedule settings panel ou Set node dependencies by dragging connections in the workflow panel.
ImportanteO DataWorks não permite excluir diretamente uma saída de nó que possua dependências downstream existentes. Essa ação causa erros na execução de tarefas downstream ou na recuperação de dados. Primeiro, ajuste a lógica de negócio downstream e remova a dependência upstream do nó downstream; depois, exclua a saída do nó no nó upstream.
-
Cenários excluídos da análise automática
Tabelas temporárias definidas em workspace table management com um formato de nomenclatura fixo (por exemplo, tabelas com o prefixo
t_) no DataWorks não são analisadas automaticamente como saídas de nó ou dependências upstream. -
Considerações sobre a análise automática
Ao utilizar a análise automática, garanta que as saídas de nó sejam únicas na região atual. Tenha em mente os seguintes pontos:
Criação de nós: Cada nó possui uma saída padrão com o mesmo nome do nó. Se existirem nós com o mesmo nome no mesmo workspace, modifique manualmente a saída de um deles.
Desenvolvimento de código: A análise automática utiliza a tabela de saída de um nó como a saída do próprio nó. Se dois nós agendados no mesmo workspace inserirem dados na mesma tabela, a análise automática causará um erro em um dos nós. Para mais informações, consulte Multiple nodes write data to the same table, and automatic parsing reports duplicate node output names.
Configuração de dependências: Ao usar tarefas SQL para processar as tabelas de saída de tarefas de sincronização em lote, para permitir que as tarefas SQL dependam rapidamente das tarefas de sincronização em lote por meio da análise automática baseada em linhagem, configure manualmente a tabela de saída do nó de sincronização em lote como uma saída de nó, ou nomeie o nó da tarefa de sincronização em lote com o mesmo nome da sua tabela de saída (a plataforma cria automaticamente uma saída de nó com o mesmo nome do nó). Caso contrário, ao enviar o nó SQL downstream, você poderá encontrar o erro The parent node output name ${projectname.tablename} that the current node depends on does not exist. The current node cannot be submitted. Make sure that the parent node with this output name has been submitted.
Adicionar manualmente dependências de nó upstream no painel de configurações de agendamento
Na seção Schedule Settings > Scheduling Dependency > Parent Nodes, adicione dependências de nó upstream inserindo a saída do nó, o nome do nó ou o ID do nó de destino. Como os nomes dos nós podem ser duplicados, recomenda-se o uso das saídas de nó.
Definir dependências de nó arrastando conexões no painel de fluxo de trabalho
Ao definir dependências arrastando conexões no painel DAG de um workflow, o DataWorks adiciona automaticamente a saída _out do nó upstream ao nó downstream, criando uma dependência de nó.
Quando uma conexão de dependência é excluída do painel de fluxo de trabalho, a dependência correspondente também é removida das configurações de agendamento do nó.
Impacto da exclusão ou alteração de saídas de nó
Se você alterar os dados produzidos por um nó ou modificar manualmente uma saída de nó, esteja ciente dos seguintes impactos:
A exclusão de uma saída de nó não afeta diretamente os dados produzidos pelo nó.
-
Caso uma saída de nó já possua dependências downstream, alterá-la ou excluí-la pode impactar severamente as tarefas downstream.
Exclusão da tabela de saída: Quando uma saída de nó configurada por análise automática muda devido à alteração da tabela de saída, os nós downstream podem se tornar orphan nodes que não são agendados, ou os dados downstream podem ser corrompidos devido à falta de dependências de dados.
Alteração da tabela de saída: Se a tabela produzida pelo nó atual precisar ser transferida para outro nó, consulte Transfer a node output table to another node.
Antes de excluir uma saída de nó que possui dependências downstream, notifique os proprietários das tarefas downstream para que eles possam ajustar suas dependências e evitar que suas tarefas se tornem tarefas órfãs.
Próximas etapas: Verificar se as dependências estão conforme o esperado
Após configurar as dependências, verifique se elas estão corretas para garantir que as tarefas sejam executadas conforme o esperado:
Visualizar dependências: Confirme se as dependências estão corretas para evitar atrasos no agendamento de tarefas causados por dependências inesperadas.
Verificação no envio: Valide se as alterações de dependência estão conforme o esperado ao enviar um nó.
Verificação de dependência de tarefa agendada: Após implantar um nó, confirme se as dependências da tarefa agendada de produção no Operation Center estão conforme o esperado. Uma tarefa agendada representa o estado mais recente da tarefa no ambiente de produção. As dependências de instância das instâncias agendadas estão relacionadas ao método de geração de instâncias.
Para mais informações, consulte Verify scheduling dependencies.
Perguntas frequentes
Para mais perguntas frequentes, consulte Scheduling dependencies.
Melhores práticas
Para configurar dependências de nó entre workspaces ou entre fluxos de trabalho dentro do mesmo workspace, consulte Configure node dependencies across workspaces or workflows.