Este tópico responde às perguntas frequentes sobre parâmetros de agendamento.
-
Casos de uso típicos
-
Testes e solução de problemas
-
Diferenças na lógica de atribuição de valores para modos de execução
-
Operações e monitoramento
Como lidar com a substituição de parâmetros entre dias ao obter dados da hora anterior?
-
Descrição do problema
O formato da partição da tabela é day=yyyymmdd,hour=hh24. Durante a execução, a hora recupera dados da hora anterior. Os parâmetros $[yyyymmdd] $[hh24-1/24] atendem a esse requisito, mas à meia-noite (00:00), a hora torna-se 23:00 do dia atual. Como resolver isso?
-
Solução
Modifique a fórmula de cálculo do parâmetro definindo datetime como $[yyyymmdd-1/24]. A fórmula de cálculo para hora permanece $[hh24-1/24].
Descrição da configuração
No código, defina
day=datetime, hour={hour},Atribua parâmetros de agendamento ao nó:
datetime=[yyyymmdd-1/24],hour=[hh24-1/24]
Exemplo
Se o horário agendado de uma instância for 2021-7-21 00:00:00, subtrair 1 hora leva ao dia anterior. Nesse caso, $[yyyymmdd-1/24] resulta em 20210720, e $[hh24-1/24] resulta em 23.
Se o horário agendado de uma instância for 2021-7-21 01:00:00, subtrair 1 hora ainda resulta no dia atual. Nesse cenário, $[yyyymmdd-1/24] resulta em 20210721, e $[hh24-1/24] resulta em 00.
Como lidar com um formato de partição de tabela que contém espaço, como pt=yyyy-mm-dd hh24:mi:ss?
A atribuição de parâmetros de agendamento não aceita espaços.
Utilize duas variáveis personalizadas para a atribuição da seguinte forma:
Data: parâmetro datetime=$[yyyy-mm-dd]
Hora: parâmetro hour=$[hh24:mi:ss]
Após obter a data e a hora separadamente, concatene-as com um espaço no código como pt=${datetime} ${hour}. Por exemplo, use select * from xc_demo_partition where dt='${key1} ${key2}'; no código SQL e configure key1=$[yyyymmdd] key2=$[hh24miss] em Schedule Settings > Parameters no lado direito.
Um nó está agendado para execução às 20:00 e seus parâmetros referenciam o horário agendado ($cyctime ou $[yyyymmddhh24miss]). Se uma falha upstream fizer o nó executar realmente às 00:00 do dia seguinte, qual horário será usado para os parâmetros de agendamento?
O horário agendado de uma instância corresponde ao horário de execução esperado. Esse horário pode diferir do horário real de execução devido a atrasos causados por fatores como espera por recursos. O horário agendado de uma instância é absoluto e não se altera conforme o horário real de execução.
Os parâmetros de agendamento utilizam o horário agendado da instância. Os valores de substituição dos parâmetros são determinados no momento da geração da instância e não mudam conforme o horário real de execução. Portanto, não é necessário preocupar-se com alterações nos valores dos parâmetros de agendamento. Na página Operation Center > Scheduled Instances, o campo Scheduled Time no painel Properties exibe o horário de execução esperado da instância (como 2021-07-13 00:00:00), que você pode comparar com o Start Time (como 00:00:27) para verificação. Na página Data Studio, configure var1=$bizdate var2=$cyctime var3=$[yyyymmdd] var4=$[yyyymmddhh24miss] em Schedule Settings > Parameters. Defina Schedule como Day e Scheduled Time como 00:00. Use select '${var1}' '${var2}'; no código para verificar os valores da data comercial e do horário agendado, respectivamente.
Como configurar parâmetros de tempo para um nó ODPS Spark?
Ao criar um nó ODPS Spark, configure os parâmetros na página de edição. O sistema executa os parâmetros na ordem configurada.
Após configurar as variáveis no código, clique em Schedule Settings no lado direito da página de edição e atribua valores às variáveis no painel de parâmetros. Para mais informações sobre parâmetros de agendamento, consulte Configurar parâmetros de agendamento. Por exemplo, insira $(var) no campo Parameters do nó ODPS Spark, adicione uma linha na tabela de parâmetros com o nome do parâmetro var e o valor do parâmetro $bizdate e, em seguida, clique em Preview Parameters para verificar o resultado da substituição.
Como usar um parâmetro de agendamento com um nó que não pode processá-lo diretamente?
Alguns nós, como os de sincronização em lote, não conseguem usar diretamente os valores retornados pelos parâmetros de agendamento após a configuração. Para esses casos, configure um nó de atribuição como upstream do nó alvo. O nó de atribuição referencia os parâmetros de agendamento, processa e transforma os valores retornados e, então, passa os valores finais dos parâmetros para o nó alvo downstream por meio do recurso de contexto de nó.
Para mais informações sobre a configuração de nós de atribuição, consulte Criar um nó de atribuição.
Para mais detalhes sobre a configuração do contexto de nó, consulte Configurar o contexto de nó.
Conceitos principais
Ao usar diretamente uma função de data do MaxCompute para obter um valor de tempo, o retorno é o horário exibido na máquina que executa a tarefa de computação. Quando a mesma instância é executada em momentos diferentes, o horário retornado muda.
Ao utilizar um parâmetro de agendamento para obter um valor de tempo, o retorno é calculado com base no horário agendado. Independentemente de quando a mesma instância for executada, o horário retornado não se altera.
Como testar parâmetros de agendamento no Data Studio?
Como a substituição automática de parâmetros de agendamento ocorre apenas pelo sistema de agendamento, para testar a substituição de parâmetros de agendamento no Data Studio, utilize Perform Smoke Testing in Development Environment.
Como as tarefas do Data Integration não suportam testes no ambiente de desenvolvimento, recomendamos criar um nó SQL para testar a substituição dos parâmetros de agendamento separadamente usando smoke testing no ambiente de desenvolvimento. Após confirmar que os resultados atendem às expectativas, utilize os parâmetros no nó do Data Integration.
Erro FAILED: ODPS-0130161:[1,84] Parse exception - invalid token '$'
Causa: O parâmetro de agendamento não recebeu um valor atribuído ou a atribuição é inválida.
Solução:
Verifique se o parâmetro de agendamento recebeu um valor atribuído.
Confira se o parâmetro de agendamento configurado atende aos requisitos. Para mais informações, consulte Configurar parâmetros de agendamento.
Após modificar a configuração do parâmetro, envie e implante as alterações. Depois da implantação, verifique o painel de propriedades da tarefa agendada no Operation Center de produção para confirmar se os parâmetros refletem a configuração mais recente.
params format error,please check your params(key=values)
Solução:
Verifique se as variáveis receberam valores atribuídos.
Confira se há espaços extras nos parâmetros de agendamento.
No nome do nó, não é permitido usar ponto (.) e caracteres chineses juntos.
Exemplo: time①=②$[yyyymmdd③hh24:mi:ss]time1=$[yyyymmdd]④time2=$[hh24:mi:ss] (①②③④ indicam as posições dos espaços).
Não são permitidos espaços em ambos os lados do sinal de igual (=) em um parâmetro de agendamento. Isso se aplica às posições ① e ② no exemplo.
Valores de parâmetros de agendamento não aceitam espaços. Isso se aplica à posição ③ no exemplo.
Dois parâmetros de agendamento devem ser separados por um único espaço. Isso se aplica à posição ④ no exemplo.
Conceito principal
|
Operação |
Descrição |
|
Execute |
Após a primeira execução, atribua manualmente um valor constante à variável. A primeira atribuição fica registrada. Se você modificar o código, a variável continuará usando o valor atribuído durante a primeira execução. |
|
Run with Parameters |
Ao usar Run with Parameters, atribua manualmente valores constantes às variáveis no código atual. Se modificar as variáveis no código, utilize Run with Parameters para reatribuir os valores constantes. Nota
Para alterar o grupo de recursos para execução de tarefas, use Run with Parameters. |
|
Perform Smoke Testing in Development Environment |
Este modo simula o cenário de agendamento automático permitindo selecionar manualmente uma data comercial para obter os valores de substituição dos parâmetros de agendamento para a data especificada. |
No editor de código da página Data Studio, utilize variáveis de sistema integradas (como ${bdp.system.cyctime}) ou variáveis personalizadas (como ${var1}). Atribua valores às variáveis no painel Schedule Settings > Parameters no lado direito (como var1=$bizdate). O sistema substitui automaticamente os valores ao executar ou usar Run with Parameters. Ao utilizar Perform Smoke Testing in Development Environment, selecione uma data comercial na barra de ferramentas superior para simular o cenário de agendamento.
Como verificar a substituição de parâmetros no ambiente de produção?
Se você modificou os parâmetros de agendamento no Data Studio, enviou e implantou as alterações, verifique o painel de propriedades da tarefa agendada no Operation Center de produção para confirmar se os parâmetros atendem às expectativas. Caso contrário, revise a página de implantação da tarefa e o pacote de implantação para validar se a implantação foi bem-sucedida. Consulte o painel de propriedades da instância agendada para visualizar a substituição dos parâmetros de agendamento de uma instância específica.
Independentemente de uma instância individual ter sido executada ou não, os parâmetros de execução da instância são atualizados em tempo real para refletir a configuração mais recente dos parâmetros da tarefa agendada em produção.
Exemplo:
O parâmetro de agendamento time1 da instância agendada A1 do dia atual do nó A está definido como $bizdate. A instância foi executada com sucesso e o valor do parâmetro no código corresponde à data comercial bizdate (valor específico).
Em determinado momento do dia, o parâmetro de agendamento time1 é alterado de $bizdate para $cyctime. O parâmetro de execução da instância do dia atual passa a exibir o horário agendado cyctime (valor específico).
Ao reexecutar a instância atual, o sistema utiliza a configuração mais recente do parâmetro: time1=$cyctime.
Para visualizar a substituição de parâmetros de agendamento usada por uma instância antes da alteração do parâmetro, consulte os logs. Para mais informações, veja a FAQ: Como verificar a substituição de parâmetros de uma instância em execução usando logs?
Na página Operation Center > Scheduled Instances, selecione uma instância e visualize os valores reais de substituição dos parâmetros de agendamento no campo Execution Parameters do painel Properties na parte inferior (como var1=20210708233000 var2=20210709000000) para confirmar se os parâmetros foram atualizados conforme esperado.
Como verificar a substituição de parâmetros de uma instância em execução usando logs?
No código, procure pela palavra-chave SKYNET_PARAVALUE.
07-09 00:00:19 INFO SKYNET_RERUN_MODE=1:
07-09 00:00:19 INFO SKYNET_FLOW_PARAVALUE=:
07-09 00:00:19 INFO SKYNET_ONDUTY=xxx:
07-09 00:00:19 INFO SKYNET_SYSTEMID=:
07-09 00:00:19 INFO CALC_ENGINE_IDENTIFIER=xxx:
07-09 00:00:19 INFO SKYNET_SOURCEID=xxx:
07-09 00:00:19 INFO SKYNET_PARAVALUE=var1=20210708233000 var2=20210709000000:
07-09 00:00:19 INFO SKYNET_TASKID=xxx:
07-09 00:00:19 INFO SKYNET_TENANT_ID=283789484710656:
07-09 00:00:19 INFO SKYNET_ID=700003341088:
07-09 00:00:19 INFO SKYNET_JOBID=700200619122:
07-09 00:00:19 INFO SKYNET_NODENAME=xc_partition_copy:
07-09 00:00:19 INFO SKYNET_CYCTYPE=0:
07-09 00:00:19 INFO SKYNET_DSC_JOB_VERSION=1:
07-09 00:00:19 INFO SKYNET_TASK_INPUT={}:
07-09 00:00:19 INFO SKYNET_FLOWNAME=ATCLOUD_FLOW:
07-09 00:00:19 INFO FILE_ID=700003341088:
Como definir o fuso horário para parâmetros de agendamento?
O Horário de Verão (DST) é compatível com a geração de instâncias e o cálculo de partições de parâmetros, garantindo a execução correta nos dias de início e término do DST. O exemplo abaixo utiliza o Horário do Pacífico dos EUA:
No dia de início do DST, 23 instâncias são geradas. Um deslocamento de 10 minutos antes das 03:00 nesse dia resulta em 01:50. Tarefas agendadas para as 02:00 no dia de início do DST são executadas como dry-run.
No dia de término do DST, 24 instâncias são geradas. Um deslocamento de 10 minutos antes das 03:00 nesse dia resulta em 02:50.
Para nós com agendamento diário, semanal e mensal no dia de início do DST, se o horário de execução configurado cair dentro do período de tempo ignorado, o horário de execução da instância gerada para aquele dia será definido como 00:00.
Os parâmetros de agendamento de um nó foram configurados, enviados e implantados, mas os valores retornados permanecem inalterados
Verifique se os parâmetros de agendamento estão sendo sobrescritos por parâmetros de fluxo de trabalho com o mesmo nome. Para mais informações sobre solução de problemas, consulte Verificar parâmetros de fluxo de trabalho.
Se existir um parâmetro de fluxo de trabalho com o mesmo nome e ele não for necessário, exclua-o. Caso precise manter o parâmetro de fluxo de trabalho, renomeie o parâmetro de agendamento do nó.