YARN AM日志会报告terminal和sparkscalashell中显示的不同时间戳

我想了解为什么会发生以下情况:

  1. 我有一个Yarn和Spark运行正常的Docker容器,除了该容器的时间戳是我想要的X小时。 所以当我运行date它返回一个时间戳减去当前时间戳的X小时。
  2. 通过在docker run命令中传递一个TZ环境variables来解决上述问题,所以当我键入date我得到了正确的时间戳。
  3. 但是,当我在YARN中运行spark-submit (集群模式是yarn)应用程序时,AM日志中的时间戳仍然是错误的(减去X小时)。
  4. 通过在spark-submit-conf 'spark.executor.extraJavaOptions=-Duser.timezone'-conf 'spark.driver.extraJavaOptions=-Duser.timezone'为JVM传递一个时区设置来解决上述问题。
  5. 这告诉我,JVM YARN使用有一个问题。 但是,当试图从SparkScala shell获取date时间时,它将返回正确的时间(使用system.currenttimemillis() ),而不指定步骤4中的任何JVM设置。

问题

  1. 我怎么知道从YARN Application Master启动容器时使用的是什么JVM,以及SparkScala shell中的JVM?
  2. 为什么在shell / bash和spark-submit中运行有不同的时间戳?