在sparklyr中更改JVM时区

问题描述 投票:1回答:1

我拼命想在Sparklyr中改变我的JVM的时区(使用spark 2.1.0)。我到处都想要GMT

我正在设置:

config$`driver.extraJavaOptions` <-"Duser.timezone=GMT"

在我的spark_config()文件中但不幸的是,在Spark UI中我仍然看到(在系统属性下)user.timezone设置为America/New_York

有任何想法吗?谢谢!

r apache-spark sparklyr
1个回答
1
投票

一些东西:

  • 该物业的名称是spark.driver.extraJavaOptions
  • 缺少领先-的价值。应该是-Duser.timezone=GMT
  • 为了保持一致性,您需要spark.driver.extraJavaOptionsspark.executor.extraJavaOptions
  • 一般情况下,应在应用程序之外设置spark.driver.extraJavaOptions和类似属性。如the official documentation所述: 在客户端模式下,不能直接在应用程序中通过SparkConf设置此配置,因为驱动程序JVM已在此时启动。相反,请通过--driver-java-options命令行选项或在默认属性文件中设置它。 在司机调用corresponding Java methods应该工作 # sc is spark_shell_connection / spark_connection sparklyr::invoke_static(sc, "java.util.TimeZone", "getTimeZone", "GMT") %>% sparklyr::invoke_static(sc, "java.util.TimeZone", "setDefault", .) 但可能没有反映在UI中,你仍然需要spark.executor.extraJavaOptions

在一般情况下,您应该在配置目录中编辑spark-defualts.conf以包含

spark.driver.extraJavaOptions -Duser.timezone=GMT
spark.executor.extraJavaOptions -Duser.timezone=GMT

如果您无法修改主配置,您可以创建一个特定于应用程序的目录,并使用SPARK_CONF_DIR环境变量指向它。

在最近的版本中,您还可以在应用程序本身中设置spark.sql.session.timeZone(请注意,它与相应的JVM选项不同,仅影响Spark查询)。

© www.soinside.com 2019 - 2024. All rights reserved.