Estou tentando entender por que ocorreu o seguinte:
- Eu tenho um contêiner do Docker com o Yarn e o Spark funcionando bem, exceto que o timestamp desse contêiner era menos X horas do que eu queria que fosse. Então, quando eu estava executando
date
, estava retornando um timestamp menos X horas do timestamp atual.
- Gerenciado para corrigir o problema acima passando uma variável de ambiente TZ no comando
docker run
, portanto, quando eu digitar date
, recebo o registro de data e hora correto.
- No entanto, quando executo aplicativos
spark-submit
(o modo de cluster é fio) no YARN, o registro de data e hora nos logs de AM ainda é o errado (menos X horas).
- Gerenciado para corrigir o problema acima, passando uma configuração de fuso horário para a JVM em
spark-submit
: -conf 'spark.executor.extraJavaOptions=-Duser.timezone'
e -conf 'spark.driver.extraJavaOptions=-Duser.timezone'
.
- Isso me diz que houve um problema com o uso do JVM YARN. No entanto, quando tentou obter o datetime do shell do SparkScala, estava retornando a hora correta (usando
system.currenttimemillis()
) sem especificar nenhuma configuração da JVM na etapa 4.
Perguntas
- Como posso saber qual JVM está sendo usada no lançamento do contêiner do YARN Application Master e qual JVM no shell SparkScala?
- Por que existem timestamps diferentes quando executados no shell / bash e no spark-submit?