Configure o fuso horário de um projeto MaxCompute com o comando SET. Por padrão, o MaxCompute usa UTC+8 para todos os campos DATETIME, TIMESTAMP e DATE e para as funções de tempo integradas associadas.
Tipos de job compatíveis
A configuração de fuso horário aplica-se aos seguintes tipos de job:
MapReduce
-
Spark on MaxCompute
Tarefas enviadas ao cluster de computação do MaxCompute herdam automaticamente o fuso horário do projeto.
Tarefas executadas no modo cliente YARN (spark-shell, spark-sql ou pyspark) exigem configuração adicional do driver. No arquivo
spark-defaults.conf, adicionespark.driver.extraJavaOptions -Duser.timezone=America/Los_Angelese substituaAmerica/Los_Angelespelo fuso horário desejado.
Machine Learning Platform for AI (PAI)
Graph
Configure o fuso horário
O MaxCompute oferece dois escopos de configuração:
|
Escopo |
Quem pode definir |
|
Nível de sessão |
Qualquer usuário |
|
Nível de projeto |
Somente o proprietário do projeto |
Defina o fuso horário de uma sessão
Envie o comando SET odps.sql.timezone=<timezoneid>; junto com a instrução de consulta.
-- Set the time zone to Asia/Tokyo for this session.
SET odps.sql.timezone=Asia/Tokyo;
Para verifique o fuso horário ativo, execute SELECT getdate();:
SELECT getdate();
Saída esperada:
+---------------------+
| _c0 |
+---------------------+
| 2018-10-30 23:49:50 |
+---------------------+
Defina o fuso horário de um projeto
Execute o seguinte comando como proprietário do projeto:
setProject odps.sql.timezone=<timezoneid>;
Após alterar o fuso horário do projeto, todos os cálculos de tempo passam a usar o novo fuso, inclusive nos dados de jobs existentes. Para minimizar impactos, configure o fuso horário do projeto apenas quando necessário e prefira aplicá-lo em projetos novos em vez de projetos ativos.
Limitações e observações de uso
Formato de fuso horário
Use nomes de fuso horário IANA, como Asia/Shanghai. Não use o formato de deslocamento GMT+9.
O formato GMT+N não oferece suporte ao horário de verão, o que pode causar cálculos de hora incorretos. Os nomes de fuso horário IANA gerenciam o horário de verão automaticamente e evitam ambiguidades.
Compatibilidade com SDK e cliente
Funções de data integradas do SQL, funções definidas pelo usuário (UDFs), tipos definidos pelo usuário (UDTs), junções definidas pelo usuário (UDJs) e a instrução
SELECT TRANSFORMleem o atributo de fuso horário do projeto.Se o fuso horário configurado no SDK for Java diferir do fuso horário do projeto, configure o fuso GMT no SDK para converter corretamente DATETIME em STRING.
Caso seu fuso horário local não seja UTC+8 durante a atualização do MaxCompute, atualize o SDK for Java e o cliente relacionado para as versões com o sufixo
-oversea. Essa medida garante precisão e consistência nos resultados de SQL e nos dados transferidos por comandos Tunnel com datas posteriores a 1º de janeiro de 1900.
Diferenças em datetimes históricos
Ao configurar um fuso horário diferente de UTC+8, podem ocorrer diferenças entre a hora real e a saída das instruções SQL executadas no DataWorks:
|
Período |
Diferença de tempo |
|
Antes de 1º de janeiro de 1900 |
9 segundos |
|
De 1º de janeiro de 1900 a 1º de janeiro de 1928 |
352 segundos |
Após atualizar para as versões com sufixo -oversea:
Dados DATETIME anteriores a 1º de janeiro de 1900 ainda podem apresentar diferença de até 343 segundos.
Dados DATETIME anteriores a 1º de janeiro de 1928 carregados antes da atualização aparecerão 352 segundos mais cedo nas novas versões.
Sem a atualização para o sufixo -oversea:
Os resultados de SQL podem divergir dos dados transferidos por comandos Tunnel.
Antes de 1º de janeiro de 1900: diferença de 9 segundos.
De 1º de janeiro de 1900 a 1º de janeiro de 1928: diferença de 352 segundos.
Fuso horário do DataWorks
Alterar o fuso horário do SDK for Java ou do cliente não afeta o fuso horário do servidor DataWorks. Avalie o impacto dessa alteração nos jobs agendados do DataWorks. Fusos horários dos servidores DataWorks por região:
|
Região |
Fuso horário |
|
Japão (Tóquio) |
GMT+9 |
|
Singapura (Singapura) |
GMT+8 |
Clientes JDBC de terceiros
Ao conectar-se ao MaxCompute com um cliente de terceiros via Java Database Connectivity (JDBC), configure o fuso horário correspondente no cliente para manter a consistência com o servidor.